2017-02-01 75 views
0

標題說明了一切。每當我嘗試通過AWS CloudFormation模板創建KMS密鑰時,都會收到此錯誤。我將該模板創建爲具有管理權限的IAM用戶,並且我希望該密鑰可由具有KMS權限的同一AWS賬戶中的任何IAM用戶管理。我使用下面的YAML資源定義爲關鍵:新的關鍵政策將不會允許您更新未來的關鍵政策

LambdaKmsKey: 
    Type: AWS::KMS::Key 
    Properties: 
     Enabled: true 
     KeyPolicy: 
     Version: 2012-10-17 
     Statement: 
     - Effect: Allow 
      Action: kms:* 
      Principal: 
      AWS: <Principle> 

,然而對於<Principal>以下值都不是問題,即使我嘗試創建堆棧作爲root用戶!

  • !Join [ "", [ "arn:aws:iam::", !Ref "AWS::AccountId", ":root" ] ]
  • !Join [ "", [ "arn:aws:sts::", !Ref "AWS::AccountId", ":root" ] ]
  • !Ref "AWS::AccountId"

我不能硬編碼我的用戶名校長因爲我想這個模板是通過堆棧創建權限的任何人都實例化。有誰知道如何解決這個極其令人沮喪的情況?提前致謝。

+0

嘗試使用CloudfFormation堆棧時會得到什麼錯誤消息? – spg

+0

@ Simon-Pierre問題的標題是我的錯誤 – Rabadash8820

回答

3

您錯過了Resource: "*"屬性。這爲我工作:

LambdaKmsKey: 
    Type: AWS::KMS::Key 
    Properties: 
     Enabled: true 
     KeyPolicy: 
     Version: 2012-10-17 
     Statement: 
     - Effect: Allow 
      Action: kms:* 
      Resource: "*" 
      Principal: 
      AWS: !Join [ "", [ "arn:aws:iam::", !Ref "AWS::AccountId", ":root" ] ] 

Resource: "*"is required and is the only possible value: - 「這CMK」

資源(必需)在一個關鍵的政策,你用 「*」 爲資源,這意味着關鍵政策僅適用於所附的CMK。

查看https://aws.amazon.com/premiumsupport/knowledge-center/update-key-policy-future/舉例。

+0

omg我會一直盯着那幾天!你是對的,'資源:「*」'是我所需要的。我認爲當你不必在用戶策略中加入主線時,你必須在基於資源的策略中包含資源行,這很荒謬......但是,很好,謝謝你的快速回答! – Rabadash8820