[レポート] Configuring Amazon S3 security settings and access controls #STG309 #AWSreInvent
こんにちは! AWS 事業本部オペレーション部の平根です。
現在、re:Invent 2024 に現地参加しています。
S3 のセキュリティの推奨設定について学べそうな「Configuring Amazon S3 security settings and access controls」というワークショップがありましたので参加してみました。
セッション概要
セッションタイトル
STG309 | Configuring Amazon S3 security settings and access controls
セッションの説明
※機械翻訳
Amazon S3は、事実上あらゆるワークロードに対応できるセキュリティ設定と詳細なアクセス制御を提供します。
このワークショップでは、Amazon S3のアクセス管理ツールを使用して、ニーズに合わせてアクセスを管理し、ユーザーベースおよびリソースベースのポリシーを大規模に定義する方法を学びます。
さらに、誰がどのデータにアクセスしているか、どこから、いつアクセスしているかを含めて、監視および監査する方法についても学びます。
異なるセキュリティ要件のシナリオを探索し、それらの要件を満たすためにさまざまなAmazon S3のツールと機能をどのように適用できるかについて実践的に学習します。
参加するにはラップトップを持参する必要があります。
スピーカー
- Erick Dame
- Sr. Solutions Architect, AWS
- Christie Lee
- Principal Solutions Architect, Amazon Web Services
Level
300 – Advanced
事前説明
初めに、S3 のセキュリティベストプラクティスについて以下の推奨事項の説明がありました。
KMS による暗号化やレプリケーションの設定など、いずれもデータの機密性や可用性を向上させるために重要な設定です。
また、最近アップデートがあった S3 の機能についても説明がありました。
S3 の Malware Protection 機能については今回の Workshop でも実施する内容となっています。
Workshopで実施した内容
以下が本 workshop で実施した演習項目となります。
※タイトルは機械翻訳
ラボ 1 - S3 のセキュリティ設定
S3 バケットポリシー、KMS キーによる暗号化、VPC エンドポイントを利用したアクセス制限により S3 を保護する方法を学びました。
- HTTPS を要求する
"aws:SecureTransport" 条件が false の場合にアクセスを拒否するバケットポリシーを作成し、HTTPS 接続を要求するように設定しました。 - SSE-KMS 暗号化
カスタマー管理キーを作成し、S3 の暗号化を SSE-KMS に設定しました。
また、バケットポリシーに AWS KMS key を使用してバケット内のオブジェクトを KMS で暗号化することを要求するように設定しました。 - S3 VPC エンドポイントへのアクセスを制限する
S3 用の VPC エンドポイントを作成し、バケットポリシーで VPC 経由でのアクセスのみを許可するように設定をしました。 - AWS Config ルールを使用してパブリックバケットを検出する
AWS Comfig にて s3-bucket-public-read-prohibited ルールを設定し、S3 バケットがパブリック公開されている場合に検知可能なことを確認しました。 - S3 用の Acces Analyzer を使用する
Acces Analyzer により、パブリックアクセス可能となっている S3 を特定できることを確認しました。
ラボ 2 - S3 アクセス許可
S3 Access Grants を利用して S3 へのアクセスを管理・設定する方法を学びました。
- S3 Access Grants Lab - 初期設定
S3 Access Grants サービスがユーザーに代わって S3 へアクセス可能な認証情報を作成できるように IAM ロールの設定を行いました。 - IAM ユーザーの S3 アクセス許可を設定する
ユーザーがS3へアクセスするための一時的な認証情報をリクエストできるように IAM ポリシーを作成しました。
また、S3 Access Grants にて、特定のユーザーに対して特定の S3 リソースへのアクセス権限を付与するように設定を行いました。
ラボ 3 - Guard Duty を使用して S3 のマルウェア保護を有効化する
- S3 バケットに対するマルウェア保護を有効にする
GuardDuty にて、特定の S3 にオブジェクトがアップロードされた際に自動的にマルウェアスキャンを行うように設定を行いました。 - オブジェクトを使用してマルウェアスキャンをテストする
また、マルウェアテストファイルを作成・アップロードし、マルウェアスキャンが適切に動作することを確認しました。
ラボ 4 - S3 アクセス制御リスト
ACL が使用されている S3 を保護する方法と、ACL での制御を無効化して IAM ポリシーやバケットポリシーへの制御へ移行するための方法について学びました。
- パブリック ACL をブロックする
デフォルトで無効となっている ACL を有効化し、バケットポリシーの条件句で "x-amz-acl" を利用してパブリックなアクセスを拒否するように設定しました。 - S3 ブロックパブリックアクセスを構成する
バケット設定のブロックパブリックアクセスにて "新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする" を有効化しました。
上記の設定によって、パブリックにアクセス可能なオブジェクトのアップロードを試みると拒否されることを確認しました。 - S3 ACL を無効にする
前の手順で有効化した ACL を再び無効化し、新規および既存オブジェクトに対して ACL 経由で権限が付与されないように設定しました。
以上でセッションの時間がタイムオーバーとなり、以下の項目については実施することができませんでした。
- S3 インベントリを利用して S3 アクセス制御を検索する
- Amazon Athena を使用して CloudTrail ログをクエリし、ACL に依存する S3 リクエストを識別する
Athena を利用して現在の S3 に設定してあるアクセス許可設定や利用状態を確認するような内容となっており、面白そうです。
ためになったこと
- Guard Duty を使用た S3 のマルウェア保護設定の簡単さ
2024 年に利用可能になった "S3 の Malware Protection" 機能は、以下のようにスキャン対象としたい S3 を指定するだけ(数クリック)で有効化することができ、非常に手軽だと感じました。
Workshop ではマルウェアテストファイルがアップロードされた際に即座に "THREATS_FOUND" タグが付与されたため、検知までに時間がかからなそうな点も魅力だと感じました。
- ACL 無効化への変更について
以下の "新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする" 設定を利用することで、既存のオブジェクトには影響を与えずに新規のオブジェクトのみ、設定を行える点は便利だと感じました。
非推奨とされている ACL ですが、現在も ACL を利用している場合は上記機能を活用して段階的に ACL 無効化に向けた変更を検討できそうです。
最後に
以上、「Configuring Amazon S3 security settings and access controls」のレポートでした。
ハンズオンを通して、S3 の基本的なセキュリティベストプラクティスを学ぶことができる大変有意義な Workshop でした。
設定の手軽さなどは実際に手を動かして初めて実感できるものだと思いますので、興味がある方は是非試してみてください!
以上、平根でした!