我已经使用 .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
});
}
我可以在控制台中看到我的数据。
我怎样才能对用户隐藏它,但仍然让他们看到其中的值(value)?
最佳答案
概览
为了能够读取参数的值,用户需要访问以下访问权限 ssm:GetParameters
(以及对加密 KMS key 的解密访问,默认情况下 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]"
}]
}
将 [key arn]
替换为 KMS key ,或 *
以阻止使用任何 key 解密。
关于amazon-web-services - AWS 参数存储安全字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46296200/