[英]AWS S3 IAM policy for role for restricting few instances to connect to S3 bucket based in instance tag or instance id
我已经有一个与所有实例相关联的AWS S3,以获取对所有S3存储桶的读取特权。 现在,我需要向角色授予写权限(放置对象)的策略,以便其中一些实例可以对S3中的某些文件夹具有写权限。 有什么方法可以通过实例标签(对我来说更好的选择)或实例ID来实现。
我尝试添加IAM策略,但是在设置条件时,我的实例未获得所需的特权。
我使用的IAM策略是:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1456567757624",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::testbucket/testfolder1/*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:ec2:eu-west-1:<accountno>:instance/<instanceid1>"
}
}
},
{
"Sid": "Stmt1456567757625",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::testbucket/testfolder2/*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:ec2:eu-west-1:<accountno>:instance/<instanceid2>"
}
}
}
]
}
这是一种替代方法,基于根据角色名称授予对S3资源的访问权限中给出的提示...
代替使用aws:SourceArn
,使用aws:userid
!
可用于策略变量的请求信息文档中的表显示了aws:userid
各种值,包括:
对于分配给Amazon EC2实例的
role-id:ec2-instance-id
,其设置为role-id:ec2-instance-id
因此,您可以使用用于启动Amazon EC2实例以允许访问的角色的Role ID或Instance ID 。
例如,这个基于Role ID :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID123",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"aws:userid": [
"AROAIIPEUJOUGITIU5BB6*"
]
}
}
}
]
}
当然,如果您要基于角色ID分配权限,则可以轻松地在角色本身内授予权限。
这是基于实例ID的 :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID123",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"aws:userid": [
"*:i-03c9a5f3fae4b630a"
]
}
}
}
]
}
实例ID将与该实例一起保留,但是如果启动了一个新实例,即使来自同一Amazon Machine Image(AMI),也将分配一个新实例ID。
aws:SourceArn
–使用源的Amazon资源名称(ARN)检查请求的源。 (此值仅适用于某些服务。)
但是,文档没有说明哪些服务可以使用它。
有一些示例可用于SQS和SNS,Amazon S3存储桶的 sourceARN以及Lambda的sourceARN 。 但是,Amazon EC2似乎不支持它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.