TOP>コラム一覧>[STG301] Amazon S3 security and access control best practices(セキュリティ)

[STG301] Amazon S3 security and access control best practices(セキュリティ)

Amazon S3 のセキュリティとアクセス制御方法と Best Practices の紹介へのセッションで、今回のセッションでは大きく 5 つの Best Practices が取り上げられました。

  1. 1. Block Public Access: S3 バケットに Block Public Access を適用してデータセキュリティを設定する
  2. 2. Encryption:S3バケットレベルでデフォルトの暗号化設定を有効にし、S3バケットキーを使用してAWS KMSを使用するコストを削減
  3. 3. Bucket Policies: 範囲を決めるために deny フレーズを使う
  4. 4. Disable ACLs : S3 バケット所有者に S3 Object 所有権の ACLs を無効にする
  5. 5. IAM Access Analyzer and logging your request : IAM Access Analyzer で許可設定が意図したとおりであることを確認し、Amazon S3 server access log と AWS CloudTrail で bucket の記録を残す


S3バケットはデフォルトでprivateに設定されているため、aws Account以外ではアクセスできず、同じアカウント内のIAMであっても、権限のないアカウントはアクセスできません。

ブロックパブリックアクセスは、Amazon S3のパブリックアクセスを防ぐことを意味し、設定することをお勧めします。S3が存在するアカウントの外からもアクセスできるように権限を与えることができますが、明確に指定してください。

S3をData Lakeバケットとして使用したり、バケットにアプリケーション設定が含まれている場合、ログデータが含まれている場合、または静的ウェブサイトの内容が含まれている場合は、S3 Block Public Accessが適していますが、S3ですぐに使用できるパブリックデータセットを埋め込む時は適していません。



Amazon S3 暗号化は、1) Client-side で使用する場合 2) データを移動するとき 3) データが保存されているときの 3 つのステップで適用できます。

その中で、データがS3に保存されているとき、利用可能な暗号化方法は

  1. 1. Amazon S3-managed keys (SSE-S3)
  2. 2. AWS KMS keys (SSE-KMS) with Customer Managed Key
  3. 3. AWS KMS keys(SSE-KMS)with AWS Managed Key

があり、それぞれの方法でサポートされている機能は、スライド内の画像で確認できます。

AWS コンソールで Amazon S3 のデフォルト暗号化設定を簡単に有効にできます。

Amazon S3バケットキーを使用すると、暗号化のパフォーマンスが向上し、KMSを使用して暗号化する場合よりも最大99%のコストを削減できます。

Amazon S3 Storage Lensは、コスト効率とデータセキュリティを向上させるために、ストレージの使いやすさとアクティビティを一目で確認できるようにするStorage Analyticsサービスです。

Storage Lensデータにアクセスする方法は次のとおりです。

  1. 1. Amazon S3 コンソールで提供されるダッシュボード
  2. 2. Amazon S3バケットでデイリーにデータを転送する
  3. 3. Amazon CloudWatch


アクセス制限の中心には、IAM、バケットポリシー、アクセス制御リストがあります。

  • Identity and Access Management(IAM):IAMアカウントポリシーによるアクセス権を付与する
  • Bucket Policy: Amazon S3 バケットへのアクセスを許可する
  • アクセス制御リスト(ACL):S3バケットまたはオブジェクトへのアクセスを許可する

IAMポリシーは、IAMユーザーがどのバケットにどのアクションを取ることができるかを定義します。

  • Effect: ポリシーが特定のアクションを許可するか拒否するか
  • Action:ポリシーが許可または拒否するアクション
  • Resource:ポリシーを適用するAWSリソース

ポリシーを作成するときは、ActionとResourceをマッピングする必要があります。bucket に対するActionの場合、Resourceも bucket でなければなりません。

IAM管理者はIAMポリシーを定義し、各IAMユーザーにIAMポリシーを割り当てます。

異なるAWSアカウント間でS3のデータを共有したい場合があります。そのとき、S3バケットが存在するアカウント以外のアカウントのIAMポリシーにのみS3バケットアクセス権を与えると、S3バケットにアクセスできなくなります。

S3バケットポリシーにも特定の他のアカウントがアクセスできるというポリシーを定義する必要があり、そのアカウントからS3アクセスが可能です。

効率的なS3アクセス制御管理のためには、以下の規則に従うことをお勧めします。

  1. 1. 共有バケットのアクセス管理を簡素化します。
  2. 2. バケットポリシーを細分化して、アクセスしようとしている各アクセスポイントごとに1つのポリシーを反映させます。
  3. 3. 特定のプレフィックスを使用してエンドユーザーを制限します。
  4. 4. 特定のVPCへのトラフィックを制限します。


S3 Object Ownershipを使用して、バケットとオブジェクトのACL(AccessControlLevel)を無効にできます。(おすすめの方案)

バケットACLを無効にすると、バケットはバケット所有者によって所有され、バケットポリシーはバケット内のすべてのオブジェクトに反映されます。

Amazon S3 server access log と AWS CloludTrail に ACL 使用情報が追加され、「aclRequired」という名前のフィールドが新規に追加されました。



IAM Access Analyzerを使用してバケットに許可されているものをレビューし、パブリックバケットまたは外部で共有されているバケットを示す単純なダッシュボードとして機能します。

IAM Access Analyzer for S3の例については上記を参照してください。

Amazon S3サーバーアクセスログとAWS CloudTrailを使用すると、バケットに入っているリクエストの詳細な履歴を確認し、セキュリティとアクセス監視に役立ち、リクエストをクエリして分析できます。

私がデータを扱う作業をするとき、S3はほとんど不可欠に使用しているストレージサービスですが、主にセキュリティとアクセス権は設定されているとおりに使用していました。

セキュリティとアクセス権を設定するためにSAと顧客と直接協議する必要がある場合に備えて、S3ポリシーについて知りたいと思いましが、今後実際のS3を扱う際に役立つと思いました。

お問い合わせ

引用元

TOP>コラム一覧>[STG301] Amazon S3 security and access control best practices(セキュリティ)

pagetop