簡體   English   中英

適用於角色的AWS S3 IAM策略,用於根據實例標簽或實例ID限制幾個實例連接到S3存儲桶

[英]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 IDInstance 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。

IAM策略元素參考文檔說:

aws:SourceArn –使用源的Amazon資源名稱(ARN)檢查請求的源。 (此值僅適用於某些服務。)

但是,文檔沒有說明哪些服務可以使用它。

有一些示例可用於SQS和SNS,Amazon S3存儲桶的 sourceARN以及Lambda的sourceARN 但是,Amazon EC2似乎不支持它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM