我正在使用命令:
put-key-policy --key-id <keyid> --policy-name <default> --policy <value>
我得到错误
不正确的PolicyDocumentException
我想这是因为我不了解–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:pathtopolicyfile.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 }"