[英]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.