AWS SCS-C02 対策 S3バケットポリシーによる暗号化制御
AWS S3バケットポリシーを使用してTLS暗号化通信を強制し、非暗号化通信を完全に遮断する方法を解説。資格取得に重要なaws:SecureTransport条件キーとStringNotLikeIfExists演算子による実装パターンを、実践的な問題を通じて習得します。
この記事のポイント
- 1aws:SecureTransport条件キーによるTLS暗号化通信の強制実装を理解する
- 2StringNotLikeIfExists演算子を使用した特定アカウントKMSキー強制の仕組みを理解する
- 3バケットポリシーによる包括的暗号化制御の実装パターンを理解する
目次
S3バケットポリシーによる暗号化制御とは
AWS S3バケットポリシーによる暗号化制御は、条件キーを使用してアクセス要求の暗号化レベルを評価し、非準拠通信を拒否する仕組みです。aws:SecureTransport条件キーでTLS通信を強制し、aws:kms関連条件でKMS暗号化を制御することで、データ保護要件を満たします。
資格試験での重要パターン
S3バケットポリシーによる暗号化制御で資格試験に頻出する2つの重要パターンを解説します。
TLS通信強制(aws:SecureTransport)
aws:SecureTransport条件キーを使用して、HTTPS(TLS)通信のみを許可し、HTTP通信を完全に遮断します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::example-bucket",
"arn:aws:s3:::example-bucket/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
この設定により、aws:SecureTransportがfalse(非暗号化通信)の場合、すべてのS3操作を拒否します。結果としてHTTPS経由のリクエストのみが許可され、HTTP通信は完全に遮断されます。
TLSバージョン制限も併用可能で、aws:RequestedRegionと組み合わせることで、特定リージョンでのみTLS 1.2以上を強制することもできます。
特定アカウントKMSキー強制
StringNotLikeIfExists演算子を使用して、特定アカウントが所有するKMSキーによる暗号化を強制します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::confidential-reports/*",
"Condition": {
"StringNotLikeIfExists": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:*:111122223333:key/*"
}
}
}
]
}
StringNotLikeIfExists演算子の重要なポイントは、暗号化ヘッダーが存在しない場合と指定パターンと一致しない場合の両方でアクセスを拒否することです。
この設定により、以下の効果を実現します:
暗号化されていないオブジェクトの拒否
暗号化ヘッダーが存在しないアップロードを完全に防止
他のアカウントのKMSキー拒否
指定アカウント以外のKMSキーを使用した暗号化を防止
指定アカウントのKMSキーのみ許可
アカウント111122223333が所有するKMSキーのみでの暗号化を強制
このように、StringNotLikeIfExists演算子は特定アカウントのKMSキーによる暗号化を確実に強制する強力なツールです。
実践問題で確認
資格試験で出題される実践的な問題で、これらのパターンの適用能力を確認しましょう。
AWS認定セキュリティ - 専門知識
練習問題
AWS認定セキュリティ - 専門知識
練習問題
AWS認定セキュリティ - 専門知識
練習問題
まとめ
S3バケットポリシーによる暗号化制御は、条件キーの適切な選択と演算子の理解が重要です。2つの核心パターンを理解することで、様々なセキュリティ要件に対応できます。
aws:SecureTransportが
StringNotLikeIfExists演算子に
これらのパターンを組み合わせることで、転送中と保管中の両方でデータを保護する包括的なセキュリティ制御を実装できます。特に規制要件の厳しい業界では、バケットポリシーによる予防的制御が不可欠です。
理解度チェック
aws:SecureTransport条件キーを使用してHTTP通信を拒否し、HTTPS通信のみを許可するバケットポリシーの実装方法を説明できるか?
StringNotLikeIfExists演算子の特性(暗号化ヘッダーが存在しない場合も拒否)を理解し、特定アカウントKMSキー強制の実装を説明できるか?