amazon-web-services - AWS 参数存储安全字符串

标签 amazon-web-services amazon-iam amazon-systems-manager

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

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

但是,当我点击“显示”时,我可以看到明文值: Console

我怎样才能对用户隐藏它,但仍然让他们看到其中的值(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/

相关文章:

android - 带有 Espresso 和 JUnit4 的 AWS 设备场

ruby-on-rails - AWS ELB 在重定向时继续在 Location header 中显示私有(private) IP

amazon-web-services - AWS : Can't ping from VPN to instance in other region

amazon-web-services - AWS IAM,限制一个账户只能查看和访问它自己创建的资源?

amazon-web-services - 如何在SSM文档中使用StringMap参数?

amazon-web-services - 云信息和参数存储 : How to select parameter for the environment

amazon-web-services - 使用 EB 扩展在 Amazon Linux 2 上运行包安装命令

python - 如何使用python更改AWS可​​信用户 "sts ExternalId"?

amazon-web-services - S3 存储桶创建 : Restrict to Specific Name Pattern

amazon-web-services - 从 VPC/Lambda 访问 Parameter Store