具有角色的 S3 跨账户访问
S3 Cross Account Access With Role
我需要创建一个跨账户角色来从我拥有的另一个 aws 账户访问 S3 存储桶的资源。
请帮助我使用跨账户 IAM 角色实现此功能,而无需使用访问密钥或密钥。
假设您有:
- 账户 A 中的角色 A
- 账户 A 中与角色 A 关联的实例 A
- 账户 B 中的存储桶 B
您希望允许实例 A 上的应用程序访问 Bucket B 的内容。
Request Information That You Can Use for Policy Variables 文档有一个 table 显示 aws:userid
的各种值,包括:
For Role assigned to an Amazon EC2 instance, it is set to role-id:ec2-instance-id
因此,您可以使用与 Amazon EC2 实例关联的角色的 角色 ID 或 实例 ID 来允许访问。
例如,此存储桶策略基于 角色 ID:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID123",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::MYBUCKET",
"arn:aws:s3:::MYBUCKET/*"
],
"Principal": "*",
"Condition": {
"StringLike": {
"aws:userid": [
"AROAIIPEUJOUGITIU5BB6*"
]
}
}
}
]
}
要获取角色 ID,请使用:
aws iam get-role --role-name ROLENAME
此存储桶策略基于 实例 ID:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID123",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::MYBUCKET",
"arn:aws:s3:::MYBUCKET/*"
],
"Principal": "*",
"Condition": {
"StringLike": {
"aws:userid": [
"*:i-03c9a5f3fae4b630a"
]
}
}
}
]
}
实例 ID 将保留在实例中,但如果启动新实例,即使来自同一 Amazon 系统映像 (AMI),也会分配一个新实例。
当然,您可能希望将这些权限限制为 s3:GetObject
而不是 s3:*
。
(此答案基于。)
我需要创建一个跨账户角色来从我拥有的另一个 aws 账户访问 S3 存储桶的资源。
请帮助我使用跨账户 IAM 角色实现此功能,而无需使用访问密钥或密钥。
假设您有:
- 账户 A 中的角色 A
- 账户 A 中与角色 A 关联的实例 A
- 账户 B 中的存储桶 B
您希望允许实例 A 上的应用程序访问 Bucket B 的内容。
Request Information That You Can Use for Policy Variables 文档有一个 table 显示 aws:userid
的各种值,包括:
For Role assigned to an Amazon EC2 instance, it is set to
role-id:ec2-instance-id
因此,您可以使用与 Amazon EC2 实例关联的角色的 角色 ID 或 实例 ID 来允许访问。
例如,此存储桶策略基于 角色 ID:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID123",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::MYBUCKET",
"arn:aws:s3:::MYBUCKET/*"
],
"Principal": "*",
"Condition": {
"StringLike": {
"aws:userid": [
"AROAIIPEUJOUGITIU5BB6*"
]
}
}
}
]
}
要获取角色 ID,请使用:
aws iam get-role --role-name ROLENAME
此存储桶策略基于 实例 ID:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID123",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::MYBUCKET",
"arn:aws:s3:::MYBUCKET/*"
],
"Principal": "*",
"Condition": {
"StringLike": {
"aws:userid": [
"*:i-03c9a5f3fae4b630a"
]
}
}
}
]
}
实例 ID 将保留在实例中,但如果启动新实例,即使来自同一 Amazon 系统映像 (AMI),也会分配一个新实例。
当然,您可能希望将这些权限限制为 s3:GetObject
而不是 s3:*
。
(此答案基于