加密與工作組配置強(qiáng)制詳解)
應(yīng)用安全SASTIaC【免費(fèi)下載鏈接】tfsecTfsec is now part of Trivy項(xiàng)目地址https://gitcode.com/gh_mirrors/tf/tfsec點(diǎn)擊查看免費(fèi)下載導(dǎo)讀本文基于 tfsec 靜態(tài)安全掃描工具的 AWS Athena 檢查文檔docs/checks/aws/athena/index.md系統(tǒng)講解 tfsec 針對(duì) Amazon Athena 的兩條內(nèi)置安全規(guī)則aws-athena-enable-at-rest-encryption靜態(tài)加密與aws-athena-no-encryption-override禁止客戶(hù)端覆蓋加密配置。讀完本文你將理解 Athena 數(shù)據(jù)庫(kù)與工作組workgroup在 Terraform 中常見(jiàn)的加密配置缺陷掌握通過(guò)encryption_configuration與enforce_workgroup_configuration編寫(xiě)合規(guī)配置的完整寫(xiě)法并能結(jié)合規(guī)則 ID、忽略注釋與 CI 集成方式將這兩條檢查落地到實(shí)際掃描流程中。檢查概覽Athena 的兩條安全規(guī)則在 tfsec 的規(guī)則體系中AWS Athena 服務(wù)共包含兩條默認(rèn)啟用、嚴(yán)重級(jí)別均為high高的檢查項(xiàng)。它們收錄在規(guī)則總表 rules.md 中并作為 mkdocs 文檔導(dǎo)航的一部分見(jiàn) mkdocs.yml規(guī)則 ID所屬服務(wù)默認(rèn)嚴(yán)重級(jí)別規(guī)則描述aws-athena-enable-at-rest-encryptionathenahighAthena 數(shù)據(jù)庫(kù)與工作組配置默認(rèn)創(chuàng)建時(shí)未做靜態(tài)加密應(yīng)為其啟用加密aws-athena-no-encryption-overrideathenahighAthena 工作組應(yīng)強(qiáng)制生效配置防止客戶(hù)端自行關(guān)閉加密設(shè)置兩條規(guī)則分別從是否加密與加密是否可被繞過(guò)兩個(gè)維度對(duì) Athena 資源進(jìn)行防護(hù)組合使用可以覆蓋 Athena 數(shù)據(jù)加密生命周期的主要風(fēng)險(xiǎn)面。兼容舊版規(guī)則 IDtfsec 在歷史版本中曾使用AWS059、AWS060這樣的短 ID 標(biāo)識(shí) Athena 檢查項(xiàng)。在新版中這些 ID 與長(zhǎng) ID 的映射關(guān)系保存在 internal/pkg/legacy/map.goAWS059: aws-athena-enable-at-rest-encryption, AWS060: aws-athena-no-encryption-override,這意味著如果你在tfsec:ignore:注釋或 CI 配置中看到過(guò)AWS059/AWS060它們分別對(duì)應(yīng)上述兩條 Athena 規(guī)則遷移到長(zhǎng) ID 后掃描行為保持一致。檢查一aws-athena-enable-at-rest-encryption默認(rèn)嚴(yán)重級(jí)別high風(fēng)險(xiǎn)說(shuō)明Athena 數(shù)據(jù)庫(kù)與工作組查詢(xún)結(jié)果集query result set應(yīng)當(dāng)開(kāi)啟靜態(tài)加密。這些數(shù)據(jù)通常直接派生于 S3 桶中的原始數(shù)據(jù)理應(yīng)享有同等強(qiáng)度的靜態(tài)防護(hù)。潛在影響若 Athena 數(shù)據(jù)庫(kù)被攻破其中的數(shù)據(jù)將可被直接讀取。修復(fù)建議為 Athena 數(shù)據(jù)庫(kù)與工作組配置啟用靜態(tài)加密。觸發(fā)場(chǎng)景Insecure Example以下示例將觸發(fā)aws-athena-enable-at-rest-encryption檢查來(lái)自 enable-at-rest-encryption/index.md??梢钥吹絘ws_athena_database未聲明任何encryption_configurationaws_athena_workgroup的result_configuration中也未配置加密resource aws_athena_database bad_example { name database_name bucket aws_s3_bucket.hoge.bucket } resource aws_athena_workgroup bad_example { name example configuration { enforce_workgroup_configuration true publish_cloudwatch_metrics_enabled true result_configuration { output_location s3://${aws_s3_bucket.example.bucket}/output/ } } }合規(guī)寫(xiě)法Secure Example在資源中顯式聲明encryption_configuration即可通過(guò)檢查來(lái)自 enable-at-rest-encryption/index.md。數(shù)據(jù)庫(kù)層面在aws_athena_database內(nèi)聲明加密配置工作組層面則在configuration.result_configuration內(nèi)聲明resource aws_athena_database good_example { name database_name bucket aws_s3_bucket.hoge.bucket encryption_configuration { encryption_option SSE_KMS kms_key_arn aws_kms_key.example.arn } } resource aws_athena_workgroup good_example { name example configuration { enforce_workgroup_configuration true publish_cloudwatch_metrics_enabled true result_configuration { output_location s3://${aws_s3_bucket.example.bucket}/output/ encryption_configuration { encryption_option SSE_KMS kms_key_arn aws_kms_key.example.arn } } } }配置要點(diǎn)說(shuō)明encryption_option指定加密方式AWS Athena 支持SSE_S3S3 服務(wù)端加密無(wú)需額外 KMS 成本與SSE_KMS使用 KMS 客戶(hù)主密鑰。上述示例選用SSE_KMS并配合kms_key_arn指定密鑰 ARN屬于更強(qiáng)、可審計(jì)的加密方案。kms_key_arn僅當(dāng)encryption_option SSE_KMS時(shí)生效需引用已創(chuàng)建的aws_kms_key資源。兩條資源的加密位置不同數(shù)據(jù)庫(kù)的encryption_configuration直接位于資源頂層工作組的encryption_configuration必須嵌套在configuration.result_configuration塊內(nèi)部作用于查詢(xún)結(jié)果輸出位置。檢查二aws-athena-no-encryption-override默認(rèn)嚴(yán)重級(jí)別high風(fēng)險(xiǎn)說(shuō)明Athena 工作組的配置應(yīng)被強(qiáng)制生效防止客戶(hù)端在發(fā)起查詢(xún)時(shí)通過(guò)會(huì)話(huà)級(jí)參數(shù)覆蓋override加密等安全設(shè)置。潛在影響客戶(hù)端可以無(wú)視工作組的加密要求以未加密方式執(zhí)行查詢(xún)。修復(fù)建議開(kāi)啟enforce_workgroup_configuration拒絕客戶(hù)端覆蓋配置。觸發(fā)場(chǎng)景Insecure Example以下示例將觸發(fā)aws-athena-no-encryption-override檢查來(lái)自 no-encryption-override/index.md。第一種寫(xiě)法將enforce_workgroup_configuration顯式設(shè)為false第二種寫(xiě)法干脆省略了configuration塊——這兩種情況都會(huì)被判定為未強(qiáng)制工作組配置resource aws_athena_workgroup bad_example { name example configuration { enforce_workgroup_configuration false publish_cloudwatch_metrics_enabled true result_configuration { output_location s3://${aws_s3_bucket.example.bucket}/output/ encryption_configuration { encryption_option SSE_KMS kms_key_arn aws_kms_key.example.arn } } } } resource aws_athena_workgroup bad_example { name example }值得注意第二個(gè)壞示例中即便沒(méi)有任何顯式的加密配置只要缺少configuration塊或未開(kāi)啟enforce_workgroup_configuration同樣無(wú)法通過(guò)檢查。這說(shuō)明該規(guī)則的判定邏輯關(guān)注配置是否被強(qiáng)制而不僅僅是是否聲明了加密參數(shù)。合規(guī)寫(xiě)法Secure Example將enforce_workgroup_configuration設(shè)為true即可通過(guò)檢查來(lái)自 no-encryption-override/index.mdresource aws_athena_workgroup good_example { name example configuration { enforce_workgroup_configuration true publish_cloudwatch_metrics_enabled true result_configuration { output_location s3://${aws_s3_bucket.example.bucket}/output/ encryption_configuration { encryption_option SSE_KMS kms_key_arn aws_kms_key.example.arn } } } }配置要點(diǎn)說(shuō)明enforce_workgroup_configuration工作組級(jí)開(kāi)關(guān)。置為true時(shí)Athena 會(huì)拒絕客戶(hù)端傳入的、與工作組設(shè)置沖突的查詢(xún)級(jí)配置例如客戶(hù)端嘗試關(guān)閉結(jié)果加密從源頭杜絕繞過(guò)。publish_cloudwatch_metrics_enabled示例中的輔助配置用于向 CloudWatch 發(fā)布查詢(xún)指標(biāo)它與本規(guī)則的判定無(wú)直接關(guān)系但屬于工作組configuration塊的常見(jiàn)完整寫(xiě)法。最佳實(shí)踐是將兩條 Athena 規(guī)則同時(shí)滿(mǎn)足既開(kāi)啟enforce_workgroup_configuration true又顯式聲明encryption_configuration形成加密 不可繞過(guò)的雙重保障。在 tfsec 中運(yùn)行與驗(yàn)證 Athena 檢查基礎(chǔ)掃描tfsec 會(huì)掃描指定目錄下的全部 Terraform 文件未指定目錄時(shí)默認(rèn)掃描當(dāng)前工作目錄tfsec .若代碼中存在上述不安全寫(xiě)法tfsec 將以非零退出碼結(jié)束并在輸出中標(biāo)注規(guī)則 ID、文件與行號(hào)。針對(duì) Athena 資源你會(huì)看到形如aws-athena-enable-at-rest-encryption、aws-athena-no-encryption-override的檢查結(jié)果條目并附 high 級(jí)別告警與修復(fù)建議。臨時(shí)豁免Ignore對(duì)于確需臨時(shí)忽略的告警可以在對(duì)應(yīng) Terraform 行尾或行上方添加注釋參見(jiàn) README.md#tfsec:ignore:aws-athena-enable-at-rest-encryption resource aws_athena_workgroup example { name example }也可以為忽略設(shè)置過(guò)期日期格式y(tǒng)yyy-mm-dd到期后自動(dòng)重新生效防止問(wèn)題被遺忘見(jiàn) README.md#tfsec:ignore:aws-athena-no-encryption-override:exp:2027-01-01排除特定檢查如果希望整次掃描跳過(guò) Athena 檢查可以使用-e參數(shù)tfsec . -e aws-athena-enable-at-rest-encryption,aws-athena-no-encryption-override接入 CItfsec 為 CI 場(chǎng)景提供了--no-colour即--no-color選項(xiàng)去除彩色輸出配合 JSON、SARIF 等結(jié)構(gòu)化輸出格式可將 Athena 檢查結(jié)果直接嵌入流水線(xiàn)門(mén)禁非零退出碼即代表存在未修復(fù)的高危配置詳見(jiàn) README.md 的 Running in CI 章節(jié)。規(guī)則來(lái)源與參考依據(jù)兩條規(guī)則的定義與描述可在規(guī)則總表 rules.md 中檢索Provider 列為awsService 列為athena。規(guī)則舊 ID 與長(zhǎng) ID 的映射關(guān)系見(jiàn) internal/pkg/legacy/map.go。單條規(guī)則的完整文檔含嚴(yán)重級(jí)別、風(fēng)險(xiǎn)說(shuō)明、不安全/安全示例位于 enable-at-rest-encryption/index.md 與 no-encryption-override/index.md。涉及的具體 Terraform 資源為aws_athena_database與aws_athena_workgroup加密參數(shù)對(duì)應(yīng) AWS Provider 中encryption_configuration塊的定義相關(guān)參數(shù)語(yǔ)義如SSE_KMS與kms_key_arn的搭配關(guān)系可對(duì)照 Terraform AWS Provider 的資源文檔進(jìn)一步核對(duì)。小結(jié)aws-athena-enable-at-rest-encryption與aws-athena-no-encryption-override是 tfsec 中針對(duì) Athena 服務(wù)的一對(duì)互補(bǔ)檢查前者保證數(shù)據(jù)庫(kù)與查詢(xún)結(jié)果集在靜態(tài)層面被加密后者保證工作組的安全配置不會(huì)被客戶(hù)端覆蓋。在編寫(xiě) Terraform 時(shí)只要在aws_athena_database頂層與aws_athena_workgroup的configuration.result_configuration中同時(shí)聲明encryption_configuration并將enforce_workgroup_configuration置為true即可同時(shí)通過(guò)兩條檢查。結(jié)合規(guī)則 ID 映射、tfsec:ignore豁免與 CI 集成可以將其低成本地納入日?;A(chǔ)設(shè)施代碼的自動(dòng)化安全審計(jì)。贊分享應(yīng)用安全SASTIaC【免費(fèi)下載鏈接】tfsecTfsec is now part of Trivy項(xiàng)目地址https://gitcode.com/gh_mirrors/tf/tfsec點(diǎn)擊查看免費(fèi)下載相關(guān)推薦Nanobot OpenAI 兼容 API 完整指南用 /v1/chat/completions 把本地 Agent 接入任何應(yīng)用Nanobot OpenAI 兼容 API 完整指南用 /v1/chat/completions 把本地 Agent 接入任何應(yīng)用 Nanobot 內(nèi)置了一套應(yīng)用安全SASTIaCtfsec 的 AWS EFS 靜態(tài)加密檢查 aws-efs-enable-at-rest-encryption 完全指南tfsec 的 AWS EFS 靜態(tài)加密檢查 aws efs enable at rest encryption 完全指南 本指南聚焦 tfsec 內(nèi)置規(guī)則庫(kù)中應(yīng)用安全SASTIaCtfsec 規(guī)則解讀強(qiáng)制 AWS ElastiCache 復(fù)制組啟用靜態(tài)加密aws-elasticache-enable-at-rest-encryptiontfsec 規(guī)則解讀強(qiáng)制 AWS ElastiCache 復(fù)制組啟用靜態(tài)加密aws elasticache enable at rest encryptio應(yīng)用安全SASTIaC創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考