2

我已经使用 .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
                        });
    }

我可以在控制台中看到我的数据。

但是,当我单击“显示”时,我可以看到纯文本值: 安慰

我如何向用户隐藏这一点,但仍然让他们看到那里的价值?

4

1 回答 1

5

概述

为了能够读取参数的值,用户需要访问以下访问权限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]"
  }]
}

您在其中替换[key arn]为 KMS 密钥,或*使用任何密钥阻止解密。

于 2017-09-20T04:06:33.307 回答