[英]AWS IAM Conditional Policies
我正在嘗試提供對 IAM 策略的訪問,條件是該特定資源具有一些標簽鍵/值對。 盡管遵循AWS 文檔,但它似乎不起作用。
IAM 政策如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/environment": "dev"
}
}
}
]
}
我有一個帶有標簽的 S3 存儲桶(名為my-bucket-name
): environment = dev
。 誰能向我解釋為什么以下命令失敗?
$ aws s3 ls s3://my-bucket-name
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
$ aws s3 cp s3://my-bucket-name/file.json .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden
更新:基於@Dennis Traub和@jarmod 的響應,我稍微編輯了這個以將標簽添加到 S3 存儲桶中的對象,但我仍然無法讀取該對象。 我還嘗試將條件更改為"s3:RequestObjectTag/environment": "dev"
並且仍然不行。
如果我沒記錯的話,Amazon S3 不支持基於存儲桶標簽的條件鍵,僅支持對象標簽。 這就是它不起作用的原因。
基於@Dennis Traub的回答,要使其與存儲桶中的特定對象一起使用,IAM 策略必須利用"s3:ExistingObjectTag/environment": "dev"
條件。 以下政策對我有用:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/environment": "dev"
}
}
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.