VPC に制限された S3 アクセスポイントを使用して、別のアカウントのバケットにアクセスする方法を教えてください。

所要時間3分
0

AWS ID およびアクセス管理 (IAM) エンティティとバケットを別の AWS アカウントで所有しています。Amazon Virtual Private Cloud (Amazon VPC) に制限された Amazon Simple Storage Service (Amazon S3) アクセスポイントを使用して、バケットへのクロスアカウントアクセスを IAM エンティティに付与したいと考えています。

解決方法

Amazon VPC に制限された S3 アクセスポイントを使用して、AWS アカウント (アカウント A) の IAM ロールまたはユーザーに、別の AWS アカウント (アカウント B) の Amazon S3 バケットへのアクセスを許可するには、次の操作を行います。

  1. Amazon S3 アクセスポイントを作成し、アカウント B のバケットにアタッチします。
  2. アカウント A に Amazon S3 VPC ゲートウェイエンドポイントを作成します。
  3. アクセスポイント、バケット、IAM ポリシーをアタッチします。

Amazon S3 アクセスポイントを作成してアカウント B のバケットにアタッチする

  1. Amazon S3 コンソールを開きます。
  2. ナビゲーションペインで、[Access Points] (アクセスポイント) を選択します。
  3. [Create access point] (アクセスポイントを作成) を選択します。
  4. [ccess point name] (アクセスポイント名) に、アクセスポイントの名前を入力します。詳細については、「Amazon S3 アクセスポイントの命名規則」を参照してください。
  5. Bucket name (バケット名) には、アクセスポイントをアタッチするアカウント B のバケットの名前を入力します。
  6. [Network Origin] (ネットワークオリジン) には Virtual Private Cloud (VPC) (仮想プライベートクラウド (VPC)) を選択します。
  7. [VPC ID] には、最初の AWS アカウント (アカウント A) の VPC ID を入力します。
  8. [Block Public Access settings for this Access Point] (このアクセスポイントのパブリックアクセスをブロックする) で、アクセスポイントに適用するパブリックアクセスをブロックする設定を選択します。 
    注意: Amazon S3 は現在、アクセスポイントの作成後のアクセスポイントのパブリックアクセスブロック設定の変更をサポートしていません。
  9. [Access Point policy] (アクセスポイントポリシー) は空白のままにします。
  10. [Create access point] (アクセスポイントを作成) を選択します。

アカウント A で Amazon S3 VPC ゲートウェイエンドポイントを作成する

クロスアカウントアクセスを許可するバケットと同じリージョンの最初の AWS アカウント (アカウント A) に S3 ゲートウェイ VPC エンドポイントを作成します。

  1. Amazon VPC コンソールを開きます。
  2. ナビゲーションペインから [Endpoints] (エンドポイント) を選択します。
  3. [Create endpoint] (エンドポイントを作成) を選択します。
  4. [Service category] (サービスカテゴリー) で [AWS services] (AWS のサービス) を選択します。
  5. [Services] (サービス) に [Type: Gateway] (タイプ:ゲートウェイ) フィルターを追加し、アクセスポイントの作成に使用したのと同じリージョンを選択します。
  6. [VPC] には、アクセスポイントの作成に使用したのと同じ VPC を選択します。
  7. [Route tables] (ルートテーブル) では、エンドポイントが使用するルートテーブルを選択します。
  8. [Full access] (フルアクセス) ポリシーを選択します。または、[Custom] (カスタム) を選択し、ポリシーで必要な S3 アクションが許可されていることを確認してください。

注意:ゲートウェイエンドポイントは他の AWS リージョンからのアクセスは許可しません。以下は、すべてのバケットへのすべての S3 アクションを許可する VPC エンドポイントポリシーの例です。

{
 "Version": "2012-10-17",
 "Statement": [{
  "Effect": "Allow",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:*"
 }]
}

アクセスポイント、バケット、IAM ポリシーをアタッチします。

最初の AWS アカウント (アカウント A) の IAM エンティティが、アクセスポイントを経由して他の AWS アカウント (アカウント B) のバケットにクロスアカウントでアクセスできるようにするには、アクセスポイント、バケット、IAM ポリシーからの許可を付与する必要があります。以下に、それぞれに必要な許可を付与するポリシーを示します。

アクセスポイントポリシー:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "DelegateControlToAccessPoint",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-acess-point/object/*",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
  ]
 }]
}

注意:このポリシーは、ソース AWS アカウント (アカウント A) の IAM ユーザーまたはロールに、ターゲット AWS アカウント (アカウント B) のアクセスポイントへの許可を付与します。

バケットポリシー

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccess",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:GetObject",
   "s3:ListBucket",
   "s3:PutObject"
  ],
  "Resource": [
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ],
  "Condition": {
   "StringEquals": {
    "s3:DataAccessPointArn": "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
   }
  }
 }]
}

注意:このポリシーは、アクセスポイントを使用して、ソース AWS アカウント (アカウント A) の IAM ユーザーにバケット (アカウント B) への許可を付与します。

IAM ポリシー

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccessToBucketAndAP",
  "Effect": "Allow",
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point/object/*",
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ]
 }]
}

注意:ソース AWS アカウント (アカウント A) の IAM ロールまたはユーザーにアタッチされたこの IAM ポリシーは、ターゲット AWS アカウント (アカウント B) のバケットとアクセスポイントに許可を付与します。

アクセスポイントを使用してバケットに対して S3 オペレーションを実行する AWS CLI コマンドの例:

注意: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

リスト:

aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

アップロード:

aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

ダウンロード:

aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt

注意:リクエストは、VPC およびバケットと同じリージョンにある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから送信される必要があります。


AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ