我使用.net AWS SDK执行了PutParameter,如下所示:
using (var client =
new AmazonSimpleSystemsManagementClient(_key, _secret, _region))
{
await client.PutParameterAsync(new PutParameterRequest
{
Name = "MyBlah",
Overwrite = true,
KeyId = keyId,
Value = "Blah",
Type = ParameterType.SecureString
});
}
我可以在控制台中看到我的数据。
我如何向用户隐藏此内容,但仍让他们看到那里有值?
答案 0 :(得分:4)
<强>概述强>
为了能够读取参数的值,用户需要访问以下访问ssm:GetParameters
(以及加密KMS密钥的解密访问,默认情况下aws/ssm
)。
避免许可
如果您使用最低权限授予用户访问权限,请确保他们无法访问ssm:GetParameters
操作。
拒绝许可
虽然在许多地方推荐使用最低权限,但大多数示例权限都过于宽松。如果您无法提供权限,则可以向您不想要检索值的任何用户添加明确的拒绝。
以下策略(如果附加到用户/角色)应阻止访问读取参数值。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": "ssm:GetParameters",
"Resource": "*"
}]
}
拒绝解密
由于查看SecureString取决于使用KMS进行解密,您还可以拒绝解密:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": "kms:Decrypt",
"Resource": "[key arn]"
}]
}
您可以使用KMS密钥替换[key arn]
,或使用任意密钥阻止*
解密。