tsumiki-media logo

tsumiki-media

Command Palette

Search for a command to run...

AWSベストプラクティス
約17分
上級
7/10
2025年7月16日

AWS SCS-C02 対策 S3バケットポリシーによる暗号化制御

AWS S3バケットポリシーを使用してTLS暗号化通信を強制し、非暗号化通信を完全に遮断する方法を解説。資格取得に重要なaws:SecureTransport条件キーとStringNotLikeIfExists演算子による実装パターンを、実践的な問題を通じて習得します。

この記事のポイント

  • 1
    aws:SecureTransport条件キーによるTLS暗号化通信の強制実装を理解する
  • 2
    StringNotLikeIfExists演算子を使用した特定アカウントKMSキー強制の仕組みを理解する
  • 3
    バケットポリシーによる包括的暗号化制御の実装パターンを理解する

目次

S3バケットポリシーによる暗号化制御とは

AWS S3バケットポリシーによる暗号化制御は、条件キーを使用してアクセス要求の暗号化レベルを評価し、非準拠通信を拒否する仕組みです。aws:SecureTransport条件キーでTLS通信を強制し、aws:kms関連条件でKMS暗号化を制御することで、データ保護要件を満たします。

資格試験での重要パターン

S3バケットポリシーによる暗号化制御で資格試験に頻出する2つの重要パターンを解説します。

TLS通信強制(aws:SecureTransport)

aws:SecureTransport条件キーを使用して、HTTPS(TLS)通信のみを許可し、HTTP通信を完全に遮断します。

aws:SecureTransportによるTLS通信強制
{
  "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:SecureTransportfalse(非暗号化通信)の場合、すべてのS3操作を拒否します。結果としてHTTPS経由のリクエストのみが許可され、HTTP通信は完全に遮断されます。

TLSバージョン制限も併用可能で、aws:RequestedRegionと組み合わせることで、特定リージョンでのみTLS 1.2以上を強制することもできます。

特定アカウントKMSキー強制

StringNotLikeIfExists演算子を使用して、特定アカウントが所有するKMSキーによる暗号化を強制します。

特定アカウント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上に構築しています。このシステムのセキュリティ要件として、Amazon S3バケットに保存されるすべてのデータが暗号化されていることと、S3バケットへのすべてのAPIコールが安全に実行されることが求められています。 セキュリティチームは以下の要件を特定しました: - S3バケットとのすべての通信はTLS 1.2以上を使用する必要がある - 暗号化されていないAPI接続を使用した通信を防止する必要がある - セキュリティポリシーが全社規模で一貫して適用される必要がある - セキュリティ要件に準拠していないリクエストは拒否する必要がある Amazon S3 APIコールに対してTLS暗号化を強制する最も効果的な方法はどれですか?

AWS認定セキュリティ - 専門知識

練習問題

製薬企業のセキュリティエンジニアが、機密性の高い研究データを保存するためのAmazon S3バケットを設定しています。このデータは複数のラボとリサーチチームによって共有され、社内のアプリケーションとAWS外部のパートナーシステムからアクセスされます。規制要件により、すべての通信が常に暗号化されている必要があります。セキュリティエンジニアは、S3バケットへのすべてのAPI呼び出しがTLSを使用して安全に行われるようにしたいと考えています。 セキュリティエンジニアはS3バケットへのAPIコールに暗号化された接続を要求するために、どのようなアプローチを採用すべきですか?

AWS認定セキュリティ - 専門知識

練習問題

企業は、機密性の高いレポートを保存するためにAmazon S3バケットを使用しています。経営陣は、このバケットに保存される新しいオブジェクトはすべて、同じアカウントが所有するAWS Key Management Service (AWS KMS) カスタマーマネージドキー (CMK) を使用したサーバーサイド暗号化によって保管時に暗号化される必要があるという要件を定めました。 アカウント番号は111122223333で、バケット名は「confidential-reports」です。セキュリティ専門家は、この要件を確実に実装するためのS3バケットポリシーを作成する必要があります。 セキュリティ専門家はポリシーにどのステートメントを含めるべきですか?

まとめ

S3バケットポリシーによる暗号化制御は、条件キーの適切な選択演算子の理解が重要です。2つの核心パターンを理解することで、様々なセキュリティ要件に対応できます。

aws:SecureTransportがfalseの場合にDenyすることで、HTTP通信を完全に遮断しHTTPS通信のみを許可。全社規模でのセキュリティポリシー適用に最適です。

StringNotLikeIfExists演算子により、暗号化ヘッダーが存在しない場合と指定パターンと一致しない場合の両方でアクセスを拒否。確実な暗号化制御を実現できます。

これらのパターンを組み合わせることで、転送中と保管中の両方でデータを保護する包括的なセキュリティ制御を実装できます。特に規制要件の厳しい業界では、バケットポリシーによる予防的制御が不可欠です。

理解度チェック

aws:SecureTransport条件キーを使用してHTTP通信を拒否し、HTTPS通信のみを許可するバケットポリシーの実装方法を説明できるか?

StringNotLikeIfExists演算子の特性(暗号化ヘッダーが存在しない場合も拒否)を理解し、特定アカウントKMSキー強制の実装を説明できるか?

他の問題も解いてみませんか?

tsumikiでは、AWS認定試験の合格に必要な知識を体系的に学習できます。実践的な問題を通じて、AWSスキルを身につけましょう。