[英]AWS Policy deny access on all production resources
在我們的團隊中,我們的生產和開發堆棧都在同一個 AWS 賬戶中。 這些堆棧通過它們的資源名稱來區分。 例如,我們有一個 S3 存儲桶example-dev-bucket
和example-prod-bucket
。 因此,所有這些資源也可以通過它們的 arn 來區分,例如arn:aws:s3:::example-dev-bucket
和arn:aws:s3:::example-prod-bucket
。 現在我想創建一個 IAM 角色來授予對除生產資源之外的所有資源的訪問權限。
要授予對所有資源的訪問權限很容易,我添加了一個包含以下語句的策略
Effect: Allow
Action:
- '*'
Resource:
- '*'
允許所有資源后,我想添加一個策略來拒絕生產資源。 只有對 S3 資源執行此操作才能正常工作,如下所示。
Effect: Deny
Action:
- '*'
Resource:
- 'arn:aws:s3:::*-prod-*'
但是,一次對多個服務執行此操作似乎不是有效的語法。 我嘗試過類似*-prod-*
和arn:aws:*:*:*:*:*-prod-*
方法。
對我來說,一個可能的解決方案是像添加 S3 服務一樣添加每項服務。 但是,很容易忘記服務。 相反,我只需要一行,其中包含在其 arn 中具有-prod-
的所有資源。
您可以在資源名稱中使用通配符來完成此操作。
例如,如果您在所有資源中包含諸如“Prod”和“Dev”之類的環境術語,則可以創建包含這些術語的策略。
這可能是 DynamoDB 開發角色的策略:
{
"Version": "2012-10-17",
"Statement": {
[
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-east-1:account-id:*Dev*"
],
[
"Effect": "Deny",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-east-1:account-id:*Prod*"
]
}
}
您可以對 S3 和任何其他服務執行相同的操作。
但是,很容易忘記服務。
如果不使用標簽,就沒有一種簡單的方法可以用一個策略覆蓋所有服務。 不能使用通配符代替資源本身(例如: arn:aws:*
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.