スキップしてコンテンツを表示

Amazon S3 Block Public Access 機能を使用して Amazon S3 リソースへのパブリックアクセスを管理する方法を教えてください。

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) リソースへのアクセスを管理するために、S3 Block Public Access を使用したいと考えています。

解決策

Amazon S3 Block Public Access 設定は、複数のアクセスレベルに構成できます。

必要な権限を追加する

Amazon S3 Block Public Access の設定を変更するには、AWS Identity and Access Management (IAM) ユーザーまたはロールに次の権限が必要です。

  • s3:PutAccountPublicAccessBlock
  • s3:PutBucketPublicAccessBlock

現在の Amazon S3 Block Public Access の設定を確認するには、IAM ユーザーまたはロールに次の権限が必要です。

  • s3:GetAccountPublicAccessBlock
  • s3:GetBucketPublicAccessBlock

詳細については、「権限」を参照してください。

S3 Block Public Access の有効化または無効化

注: 2023 年 4 月以降、Amazon S3 では作成したすべてのバケットで S3 Block Public Access が自動的に有効になります。

S3 Block Public Access 設定は、アカウントレベルバケットレベル、またはその両方で構成できます。

S3 Block Public Access を有効化する

S3 Block Public Access を有効にすると、Amazon S3 は次のアクションを実行します。

  • 匿名リクエストと未認証リクエストを例外なく拒否します。ウェブブラウザまたは curl を使用して Amazon S3 の URI と URL にアクセスすると、"HTTP 403 Access Denied" エラーが発生します。
  • Amazon S3 オブジェクトに適用した新しいパブリック ACL は無視され、S3 バケットとオブジェクトへのユーザーアクセスは取り消されます。

S3 Block Public Access を無効化する

S3 Block Public Access が無効な場合、Amazon S3 はパブリックバケットポリシーまたはパブリック ACL を使用してオブジェクトへのアクセスを許可します。LISTGET などの Amazon S3 リクエストには、コストが発生する可能性があります。あるユーザーがパブリックバケットまたはオブジェクトに対して匿名リクエストを行った場合、お客様に対する AWS 請求が発生します。AWS Config ルールと IAM Access Analyzer for S3 は、バケットのパブリックステータスに関する警告を生成します。

S3 Block Public Access を無効にすると、Amazon S3 コンソールの [外部アクセスの概要]アクセス設定が表示されます。

"Access Denied" と S3 バケットエラーのトラブルシューティング

S3 バケットで S3 Block Public Access の有効化または無効化を試行すると、"Access Denied" エラーが発生する場合があります。

この問題をトラブルシューティングするには、次の手順を実行します。

  • AWS Organizations のサービスコントロールポリシー (SCP) により、アカウントまたはバケットレベルでの S3 Block Public Access の変更が妨げられていないことを確認します。s3:PutBucketPublicAccessBlock アクションと s3:PutAccountPublicAccessBlock アクションに Deny ステートメントが含まれていないか確認します。
  • バケットの [アクセス]Error と表示される場合は、IAM ポリシーに次の権限を追加し、バケットとパブリックアクセス設定を表示できるようにします。
    s3:GetAccountPublicAccessBlock
    s3:GetBucketPublicAccessBlock
    s3:GetBucketPolicyStatus
    s3:GetBucketLocation
    s3:GetBucketAcl
    s3:ListAccessPoints
    s3:ListAllMyBuckets

S3 Block Public Access を変更した IAM ユーザーまたはロールを特定する

AWS CloudTrail イベント履歴を参照し、次の EventNames に関連するイベントを特定します。

  • アカウントレベルでは、PutAccountPublicAccessBlock を確認します。
  • バケットレベルでは、PutBucketPublicAccessBlock を確認します。

呼び出し元の Amazon リソースネーム (ARN) を特定するには、ログで UserIdentity フィールドを確認します。ログの例:

 "userIdentity": {  
 "type": "AssumedRole",  
 "principalId": "[AccountID]:[RoleName]",  
 "arn": "arn:aws:sts::[AccountID]:assumed-role/[RoleName]/[RoleSession]",

次に bucketName を参照し、変更された S3 バケットを特定します。ログの例:

"requestParameters": {  
 "publicAccessBlock": "",  
 "bucketName": "[BucketName]"
AWS公式更新しました 4ヶ月前
2コメント

「s3:PutBucketPublicAccessBlockアクションとs3:PutBucketPublicAccessBlockアクションの拒否ステートメントを確認します。」

PutBucketPublicAccessBlockが2つ続いていますが、誤記でしょうか?

応答済み 2年前

コメントをお寄せいただき、ありがとうございます。確認させていただいた後で、必要に応じて情報センターを更新いたします。

AWS
モデレーター
応答済み 2年前

関連するコンテンツ