我正在使用命令:
put-key-policy --key-id <keyid> --policy-name <default> --policy <value>
我得到错误
MalformedPolicyDocumentException
我认为是因为我不了解 value–policy
参数的含义。我可以参考任何链接吗?
我正在使用命令:
put-key-policy --key-id <keyid> --policy-name <default> --policy <value>
我得到错误
MalformedPolicyDocumentException
我认为是因为我不了解 value–policy
参数的含义。我可以参考任何链接吗?
我自己也遇到过同样的事情,我希望这会有所帮助。这是在 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 策略,因此您需要
$ aws kms put-key-policy --key-id YYYYYYYY --policy-name default --policy "{\n \"Version\" : \"2012-10-17\",\n \"Id\" : \"key-consolepolicy-3\"\n }"