すべての S3 バケット全体で機密データ(PII、PHI、財務データ)を自動的に発見し、分類する。
→Amazon Macie を有効にし、自動機密データ検出ジョブを設定する。一般的なデータタイプにはマネージドデータ識別子を使用し、プロプライエタリな形式にはカスタムデータ識別子を作成する。
理由: Macie は、S3 データ分類のためのマネージドでスケーラブルなソリューションを提供する。既知の非機密データ(例:テストデータ)の検出結果を抑制するには、Macie の許可リストを使用する。
S3 バケットに対して、特定のキーを使用した SSE-KMS の要求や HTTP リクエストの拒否など、複数のセキュリティ制御を強制する。
→複数の `Deny` ステートメントと条件キー (`aws:SecureTransport: false`、`s3:x-amz-server-side-encryption: "aws:kms"`、`s3:x-amz-server-side-encryption-aws-kms-key-id: "key-arn"`) を使用するバケットポリシーを使用する。
理由: バケットポリシーは、きめ細かなリソースレベルの制御を提供する。Deny ステートメントで複数の条件キーを使用することは、バケットに対する階層的なセキュリティ態勢を強制する標準的な方法である。
すべての新しい EBS ボリュームが、組織全体で特定の顧客管理型 KMS キーで暗号化されるようにする。
→各リージョンのアカウント設定で EBS 暗号化をデフォルトで有効にし、CMK を指定する。予防的なガードレールとして、`encrypted` パラメータが `false` の場合に `ec2:CreateVolume` を拒否する SCP を適用する。
理由: デフォルト設定は利便性を提供し、SCP は厳格な強制ガードレールを提供し、EBS の保存データの暗号化に対する多層防御アプローチを構築する。
AWS KMS を使用して、大きな (> 4KB) データオブジェクトを暗号化する。
→エンベロープ暗号化を使用する。`KMS:GenerateDataKey` を呼び出して、プレーンテキストデータキーと暗号化されたデータキーを取得する。プレーンテキストキーを使用して、大きなオブジェクトをローカルで暗号化する。暗号化されたオブジェクトと暗号化されたデータキーを一緒に保存する。プレーンテキストキーは破棄する。
理由: KMS Encrypt API には 4KB の制限がある。エンベロープ暗号化は、任意のサイズのデータを暗号化できる一方で、KMS によって小さなデータキーが保護されるため、KMS を介してデータをストリーミングするよりもコストとレイテンシーが削減される。
リファレンス↗
災害復旧やグローバルなアプリケーションの一貫性のために、複数の AWS リージョンで同じ暗号化キーを使用する。
→1つのリージョンで KMS マルチリージョンプライマリキーを作成し、他のリージョンでレプリカキーを作成する。あるリージョンでキーによって暗号化されたデータは、別のリージョンでレプリカを使用して復号化できる。
理由: マルチリージョンキーは同じキーマテリアルとキー ID を共有するため、復号化のためのクロスリージョン API 呼び出しなしでクロスリージョンデータポータビリティが可能になる。
アプリケーションで使用される認証情報(例:データベースパスワード、API キー)を安全に保存し、自動的にローテーションする。
→AWS Secrets Manager に認証情報を保存する。カスタムまたは AWS 提供の Lambda ローテーション関数を使用して自動ローテーションを設定する。アプリケーションは IAM ロールを介して実行時にシークレットを取得する。
理由: Secrets Manager は、安全な保存、アクセス制御、監査、自動ローテーションを含むシークレットライフサイクル全体のために特別に構築されたサービスであり、ハードコードされた認証情報や期限切れの認証情報のリスクを軽減する。
ウェブサイト用のパブリック TLS 証明書と、内部マイクロサービス通信 (mTLS) 用のプライベート証明書の両方を管理する。
→ELB/CloudFront と統合された無料のパブリック証明書には AWS Certificate Manager (ACM) を使用する。ACM Private CA を使用してプライベート認証局を作成し、内部サービス用のプライベート証明書を発行および管理する。
理由: これにより、パブリック PKI とプライベート PKI が分離され、それぞれのユースケースに適したツールが使用される。ACM はパブリック証明書のライフサイクルを処理し、ACM Private CA は完全にマネージドなプライベート PKI 階層を提供する。
ルートユーザーでさえも削除できないように、固定された保持期間にわたってデータを不変に保存する。
→バケットで S3 Object Lock を有効にする。コンプライアンスモードで保持期間を設定する。
理由: コンプライアンスモードは最強の WORM (Write-Once-Read-Many) 制御であり、いかなるユーザーによる削除も防ぐ。ガバナンスモードは、承認されたプリンシパルによってバイパスされる可能性がある。
必須の保持期間中に、バックアップを削除(例:ランサムウェアや認証情報の侵害による)から保護する。
→AWS Backup Vault Lock をコンプライアンスモードで、最小保持期間を設定して有効にする。
理由: コンプライアンスモードの Vault Lock は、バックアップボールトを WORM 準拠にし、保持期間が終了する前にルートを含むいかなるユーザーもリカバリポイントを削除することを防ぐ。
データが OS、ハイパーバイザー、または AWS オペレーターに決して公開されないような、高度に機密性の高いデータを処理する。
→AWS Nitro Enclaves を使用して、暗号的に隔離されたコンピュート環境を作成する。KMS アテステーションを使用して、検証されたエンクレーブのみがデータを復号化できることを保証する。
理由: Nitro Enclaves は、AWS 上でデータ利用中の最も強力な保護レベルを提供し、ハードウェアレベルのアテステーションを使用して信頼された実行環境を作成する。
AWS の外部にあるオンプレミス HSM に物理的に保存および管理されている暗号化キーで AWS サービスを使用する。
→KMS から外部キーマネージャーへの暗号化操作をプロキシする KMS External Key Store (XKS) を設定する。
理由: XKS は、顧客が主権またはコンプライアンス要件を満たすために、AWS の外部でキーマテリアルの制御を維持しながら、KMS 対応の AWS サービスと統合することを可能にする。
組織全体で、予防的および検出的制御を使用して、厳格な「S3 バケットの公開なし」ポリシーを強制する。
→管理アカウントから組織レベルで S3 Block Public Access を有効にする。ポリシーが公開アクセスを許可する場合、`s3:PutBucketPolicy` などのアクションを拒否する SCP で補完する。AWS Config を使用してドリフトを検出する。
理由: この多層アプローチは、デフォルトのブロック(組織設定)、誤設定を阻止する予防的なガードレール(SCP)、および継続的な監視のための検出制御(Config)を提供する。