Sre*_*ath 2 amazon-s3 amazon-web-services
我有一个 AWS S3 已经与所有实例相关联,以获得对所有 S3 存储桶的读取权限。现在我需要为写入权限(Put 对象)的角色添加一个策略,以便其中一些实例可以对 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>"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是一种替代方法,基于根据角色名称授予对 S3 资源的访问权限中给出的提示...
而不是使用aws:SourceArn,使用aws:userid!
您可以用于策略变量文档的请求信息有一个表格,aws:userid其中显示了各种值,包括:
对于分配给 Amazon EC2 实例的 Role,它设置为
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*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
当然,如果您要根据角色 ID 分配权限,那么您也可以轻松地在角色本身内授予权限。
这是基于Instance ID 的:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID123",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"aws:userid": [
"*:i-03c9a5f3fae4b630a"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
实例 ID 将保留在实例中,但如果启动了新实例,即使是来自同一个 Amazon 系统映像 (AMI),也会分配一个新实例。
| 归档时间: |
|
| 查看次数: |
2164 次 |
| 最近记录: |