我正在使用命令:
put-key-policy --key-id <keyid> --policy-name <default> --policy <value>
我收到错误
MalformedPolicyDocumentException
我认为是因为我不理解–policy
参数的值。
我可以参考的任何链接?
答案 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 }"