type
status
date
slug
summary
tags
category
icon
password

理論

AWSアカウント間でS3バケットへのアクセスを許可するには、以下のポイントを理解することが重要です。
  1. IAMポリシーとバケットポリシー:
      • IAMポリシーは、ユーザーやグループに対して特定のアクションを許可または拒否しますが、S3バケットへのアクセスを制御するためには、S3バケットポリシーを設定する必要があります。
      • S3バケットポリシーでは、どのアカウントやIAMユーザーがどのリソースにアクセスできるかを詳細に定義します。特にクロスアカウントアクセスの場合、Principalフィールドを使用して、他のAWSアカウントのユーザーにアクセス権を付与します。
      • 状況によりますが、両方が適切に設定されている必要があるケースが多いです。クロスアカウントアクセスやパブリックアクセスのシナリオでは、S3バケットポリシーの設定が特に重要です。
  1. クロスアカウントアクセス:
      • クロスアカウントアクセスとは、1つのAWSアカウントに保存されたリソースに、別のAWSアカウントのIAMユーザーがアクセスできるようにする設定です。このためには、適切なバケットポリシーで、指定したIAMユーザーに対してリソース(S3バケット)のアクセス権を付与します。
      • 例として、arn:aws:iam::AccountB:user/User_DataProcessorのように、別アカウントのユーザーを指定してアクセスを許可します。
  1. S3バケットポリシーの基本構文: S3バケットポリシーはJSON形式で記述され、通常は次のような構成をとります:
    1. IAMユーザーの権限設定: IAMユーザー(User_DataProcessor)には、S3バケットにアクセスできる権限(s3:GetObjects3:ListBucketなど)を付与する必要があります。
    1. バケットポリシーの検討点:
        • Actionには、アクセスを許可したい操作(s3:GetObjects3:ListBucket)を指定します。
        • Resourceには、アクセス対象となるS3リソース(バケット全体またはファイル単位)を指定します。
     

    実践

    AWSクロスアカウントS3アクセス設定のハンズオン

    このハンズオンでは、2つの異なるAWSアカウント間でS3バケットへのアクセスを設定する方法を学びます。アカウントAのS3バケットに保存されたデータファイルに、アカウントBのIAMユーザーがアクセスできるようにします。

    目的

    • アカウントAのS3バケットに、アカウントBのIAMユーザーがアクセスできるように設定する。
    • アカウントAでバケットポリシーを設定し、アカウントBのIAMユーザーにアクセス権限を付与する。

    必要な準備

    • 2つのAWSアカウント(アカウントAとアカウントB)
    • アカウントAのS3バケット(例:account-a-bucket
    • アカウントBのIAMユーザー(例:User_DataProcessor

    ステップ1: アカウントAでS3バケットを作成

    1. AWS Management Consoleにログイン(アカウントAで)。
    1. S3サービスを選択し、バケットを作成します。
        • バケット名: account-a-bucket(一意の名前を使用)。
          • notion image
        • 他の設定はデフォルトのままでOK。

    ステップ2: アカウントBのIAMユーザーを作成

    1. アカウントBにログインし、IAMコンソールに移動。
    1. ユーザーを追加を選択し、User_DataProcessorという名前で新しいIAMユーザーを作成します。
        • アクセスの種類は「プログラムによるアクセス」と「AWS Management Consoleアクセス」を選択。
    1. ユーザーにS3アクセス権限を付与します。
        • 「ポリシーを直接アタッチ」し、AmazonS3ReadOnlyAccessを選択。
        notion image

    ステップ3: アカウントAでS3バケットポリシーを設定

    1. アカウントAでS3バケットのポリシーを設定:
      1. S3バケットの「権限」タブを開き、「バケットポリシー」を選択。
      2. 次のポリシーを入力して、アカウントBのUser_DataProcessorにアクセス権限を付与します。
      3. notion image
    1. ポリシーを保存

    ステップ4: アカウントBからS3バケットにアクセス

    1. アカウントBのUser_DataProcessorとしてログインし、AWS CLIまたはS3コンソールを使用して、アカウントAのS3バケットにアクセスします。
    1. 例えば、AWS CLIで次のコマンドを実行してファイルを確認できます:

      確認

      • アカウントBのユーザーは、アカウントAのS3バケットのオブジェクトを取得し、バケット内のオブジェクトをリストできることを確認します。

      解説

      このハンズオンでは、クロスアカウントアクセスを実現するために、S3バケットポリシーを利用しています。アカウントAのS3バケットに対して、アカウントBのIAMユーザーに権限を付与することで、アカウントBからS3バケットにアクセス可能になります。このプロセスでは、以下の要素を確認しました:
      • Principal: アカウントBのIAMユーザー(User_DataProcessor)に対してアクセス権限を与える。
      • Action: アクセス可能なアクション(s3:GetObjects3:ListBucket)を指定。
      • Resource: アクセス対象となるリソース(S3バケットとそのオブジェクト)。

      一門道場

      小売会社(Account A)が保存したデータファイルを、別の会社(ビジネスパートナー)に提供する必要があります。このファイルはAccount AのS3バケットに保存されており、ビジネスパートナーは自社のIAMユーザー(User_DataProcessor)に対して、Account AのS3バケット内のファイルへのアクセスを許可したいと考えています。この場合、必要な手順を選択する問題です。
       
      1. A:「S3バケットでクロスオリジンリソースシェアリング(CORS)を有効にする」
        1. 解説:
          CORSは、異なるドメイン間でリソースを共有するための設定ですが、これは主にブラウザベースのリクエストに関係するもので、IAMユーザーによるアクセス権の管理には直接関係しません。そのため、これは不正解です。
      1. B:「Account AのS3バケットポリシーに次の内容を設定する」
        1. 解説:
          これはAccount A側でのS3バケットポリシー設定に関するものですが、指定された形式(arn:aws:s3:::AccountABucketName/*)は不完全です。arn:aws:s3:::AccountABucketNameと指定することで、バケット自体に対するアクセス権を付与することはできますが、ファイルにアクセスするためには適切なポリシーが必要です。この選択肢は誤りです。
      1. C:「Account AのS3バケットにアクセスするために、Account BのIAMユーザー(User_DataProcessor)に対してアクセス権限を付与する」
        1. 解説:
          これは正しい選択肢です。Account AのS3バケットポリシーで、Account BのIAMユーザー(User_DataProcessor)に対してアクセス権限を付与することで、指定されたIAMユーザーがS3バケットにアクセスできるようになります。正しいポリシー例は次のようになります。
          これにより、User_DataProcessorは指定されたバケット内のファイルを読み取る権限を得ます。
      1. D:「Account BのIAMユーザー(User_DataProcessor)の権限を設定する」
          • 解説: IAMユーザーにアクセス権を付与することは、アクセス対象のリソース(この場合はAccount AのS3バケット)に対しても権限を設定する必要があります。しかし、この選択肢は他のAWSアカウントのリソースへのアクセスを設定するものではないため、不完全な解答です。
      1. 選択肢E:「Account BでUser_DataProcessorに対して、Principalを指定したポリシーを設定する」
          • 解説: Principalを指定するのは、Account A側のS3バケットポリシーで行うべきであり、Account B側でPrincipalを設定することは誤りです。この選択肢も不正解です。

      正解

      • 選択肢C: Account AのS3バケットに、Account BのIAMユーザー(User_DataProcessor)に対してアクセス権限を付与する。
      • 選択肢B: Account A側でS3バケットポリシーを設定し、ファイルの読み取りとバケットのリスト表示が可能なアクセス権限を付与します。

      解説

      この問題では、異なるAWSアカウント間でS3バケットへのアクセス権を設定する方法を問われています。正しく設定するためには、Account AのS3バケットポリシーで、Account BのIAMユーザーに対して適切な権限(s3:GetObjects3:ListBucket)を付与する必要があります。
      相关文章
      クラウド技術の共有 | AWS Site-to-Site
      Lazy loaded image
      EKSでのWordPressデプロイ:KCNA-JP試験対策 (Kubernetes実践編)
      Lazy loaded image
      初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)
      Lazy loaded image
      EFSを活用!AWS EC2でDockerを使ったWordPressサイト構築
      Lazy loaded image
      529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
      Lazy loaded image
      528-AWS SAP AWS 「理論・実践・一問道場」Migration Evaluator
      Lazy loaded image
      007-AWS SAP AWS 「理論・実践・一問道場」 マイクロサービスのコンテナ化とサーバーレスアーキテクチャ005-AWS SAP AWS 「理論・実践・一問道場」 古いデバイス対応とHTTPヘッダー
      Loading...
      みなみ
      みなみ
      一个普通的干饭人🍚
      最新发布
      02-生成AIパスポート試験対策:第2章「生成AI」
      2025-2-1
      01-生成AIパスポート試験対策:第1章「人口知能」
      2025-2-1
      究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
      2025-1-27
      不要再傻傻的直接买NISA啦
      2025-1-27
      Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
      2025-1-24
      529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
      2025-1-22
      公告
      🎉欢迎访问我的博客🎉
      - 感谢您的支持 --
      本站点于2024/09/01建立
      👏主要分享IT相关主题👏
      系统管理:
      Redhat…
      容器和编排:
      Kubernetes、Openshift…
      云计算:
      AWS、IBM…
      AI入门
      以及技术笔记和考证经验
      定期更新,欢迎互动。
      感谢访问!
      快速浏览相关标签