gpt4 book ai didi

amazon-web-services - 允许从 Amazon EC2 实例到 Amazon S3 存储桶的跨账户访问

转载 作者:行者123 更新时间:2023-12-03 07:17:18 31 4
gpt4 key购买 nike

我在帐户 B 中有 S3 存储桶“跨存储桶”。现在我希望帐户 A 中存在的 EC2 访问帐户 B 中的此存储桶“跨存储桶”。

我需要使用 IAM 角色来实现此目的,因为我们不允许创建用户。

我已使用以下模板在帐户 B 中创建角色

 AWSTemplateFormatVersion : '2010-09-09'
Description: 'Cross account role for S3'

Parameters:
AccountId:
Type: String
Description: Account ID of admin account (containing user to allow)

Resources:
CrossAccountRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Action: sts:AssumeRole
Principal:
AWS:
- !Sub arn:aws:iam::${AccountId}:root
Path: /
Policies:
- PolicyName: my-s3-delegate
PolicyDocument:
Statement:
- Effect: Allow
Action:
- s3:ListBucket
- s3:GetObject
Resource: "*"
RootInstanceProfile:
Type: "AWS::IAM::InstanceProfile"
Properties:
Path: "/"
Roles:
-
Ref: "CrossAccountRole"

创建此角色后,我应该如何将其附加到帐户 A 中存在的实例?或者我在这里遗漏了一些东西?

最佳答案

您的情况是:

  • 账户 A 中的 Amazon EC2 实例
  • 账户 B 中的 Amazon S3 存储桶
  • 您希望允许 EC2 实例访问存储桶

有两种方法可以做到这一点:

选项 1:存储桶策略

只需向账户 B 中的存储桶添加存储桶策略,以授予对 EC2 实例使用的 IAM 角色的访问权限:

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::ACCOUNT-A:role/my-ec2-role"
]
}
}
]
}

EC2 实例将使用其正常的 IAM 角色凭证来访问存储桶。另请确保 IAM 角色已授予使用 Amazon S3 访问存储桶的权限:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket-b",
"arn:aws:s3:::bucket-b/*"
]
}
]
}

选项 2:承担角色

  • 在账户 B 中创建一个有权访问存储桶的 IAM 角色
  • EC2 实例上的代码调用 IAM 角色上的 AssumeRole()
  • 使用返回的凭据访问存储桶

关于amazon-web-services - 允许从 Amazon EC2 实例到 Amazon S3 存储桶的跨账户访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62872588/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com