簡體   English   中英

AWS 政策拒絕訪問所有生產資源

[英]AWS Policy deny access on all production resources

在我們的團隊中,我們的生產和開發堆棧都在同一個 AWS 賬戶中。 這些堆棧通過它們的資源名稱來區分。 例如,我們有一個 S3 存儲桶example-dev-bucketexample-prod-bucket 因此,所有這些資源也可以通過它們的 arn 來區分,例如arn:aws:s3:::example-dev-bucketarn: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:*

參考資料: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards

暫無
暫無

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

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