AWS密钥管理服务CLI命令

时间:2016-08-11 18:13:34

标签: amazon-web-services cloud aws-lambda key-management aws-kms

我正在使用命令:

put-key-policy --key-id <keyid> --policy-name <default> --policy <value>

我收到错误

  

MalformedPolicyDocumentException

我认为是因为我不理解–policy参数的值。 我可以参考的任何链接?

1 个答案:

答案 0 :(得分:3)

我本人也遇到过同样的事情,希望对您有所帮助。这是在FreeBSD服务器上完成的,因此Windows用户必须进行适当的调整。如果您执行以下操作:

$ aws kms put-key-policy --generate-cli-skeleton 

您将获得cli正在寻找输入内容的骨架:

{
   "KeyId": "", 
   "PolicyName": "", 
   "Policy": "", 
   "BypassPolicyLockoutSafetyCheck": true
}

表示允许的输入是一段JSON,最多包含4个可能的参数。在这种情况下,我们正在寻求创建新策略,因此我们唯一需要的策略就是"Policy"。所需要的是字符串形式的JSON策略。以以下示例为例:

{
 "Version" : "2012-10-17",
 "Id" : "key-consolepolicy-3"
}

首先对双引号进行转义,得到:

{
 \"Version\" : \"2012-10-17\",
 \"Id\" : \"key-consolepolicy-3\"
}

然后用\n个字符替换换行符,得到:

{\n \"Version\" : \"2012-10-17\",\n \"Id\" : \"key-consolepolicy-3\"\n }

然后我们将其用双引号引起来:

"{\n \"Version\" : \"2012-10-17\",\n \"Id\" : \"key-consolepolicy-3\"\n }"

最后我们的文件如下所示:

{
  "Policy" : "{\n \"Version\" : \"2012-10-17\",\n \"Id\" : \"key-consolepolicy-3\"\n }"
}

如果您已经拥有要使用的策略密钥,则只需检索它即可:

$ aws kms get-key-policy --policy-name default --key-id XXXXXXXXX > policy

以任何一种创建方式,您都可以使用文件中的策略来更新新密钥的策略:

$ aws kms put-key-policy --key-id YYYYYYYY --policy-name default --cli-input-json file://policy

在Windows上,“ file://policy”类似于:“ file://C:\path\to\policyfile.json

如果要使用--policy命令行参数而不是文件中的策略,则--policy也在寻找字符串形式的JSON策略,因此您需要< / p>

$ aws kms put-key-policy --key-id YYYYYYYY --policy-name default --policy "{\n \"Version\" : \"2012-10-17\",\n \"Id\" : \"key-consolepolicy-3\"\n }"