如何授予客户对我的AWS账户中特定S3存储桶的读/写访问权限,而不允许他们访问任何其他存储桶或资源?
他们应该能够从他们的ec2实例中的powershell脚本访问这个bucket。
找到此策略
{
"Version": "2012-10-17",
"Id": "PolicyForBucketX",
"Statement": [
{
"Sid": "AllowCustomerRWAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::bucket-x/*"
}
]
}
让客户AWS访问我的AWS的特定s3存储桶?
这样,他们就可以通过powershell中的访问键访问s3。但是,他们可能没有使用硬编码的访问键来使用s3。他们可能正在使用具有实例角色的STS,以便ec2访问他们的s3资源。
这个还能用吗?他们是否需要将我的存储桶x添加到他们的实例角色权限存储桶中?
有更好的方法吗?我可能/可能没有他们的AWS资源id的详细信息。
使用桶策略和IAM策略(用户或角色)可以根据需要限制用户/资源。我同意Maurice的观点,因为限制的程度很大程度上取决于你具体想做什么。
你也可以使用CloudFront来限制不受IAM管理的用户访问你的桶对象。
一般来说,您应该将访问视为两部分任务。在资源方面,您向资源授予权限,在本例中,您正在为跨帐户(主体)的特定桶(资源)执行此操作。你就完成了。
现在,访问它的身份也需要由帐户管理员(root)以同样的方式授予权限。即授予用户/角色
权限"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
如果他们想使用一个安装了AWS PowerShell的实例,他们可以创建一个具有上述权限的实例配置文件/角色,并且他们将能够运行命令并访问您的bucket。这样做是对的。
无论他们如何访问实例,当他们从实例到您的bucket进行api调用时,AWS将首先检查调用者(可能是实例配置文件或他们假设的角色)是否具有这些操作(客户设置)的权限。然后将检查资源是否允许这些操作(您的设置)。