【问题标题】:Get secrets from AWS Secret manager without passing access key and secret key from config无需从配置中传递访问密钥和密钥即可从 AWS 密钥管理器获取密钥
【发布时间】:2019-12-07 16:47:11
【问题描述】:

我正在使用 AWS Secret Manager Service 检索一些机密信息,例如 SMTP 详细信息或连接字符串。但是,要从 AWS Secret Manager Service 获取密钥值,我们似乎需要传递访问密钥和密钥,而不是我们想要检索的密钥。所以我在配置文件中维护这些值。

        public AwsSecretManagerService(IOptions<AwsAppSettings> settings)
        {
            awsAppSettings = settings.Value;
            amazonSecretsManagerClient = new AmazonSecretsManagerClient
                (awsAppSettings.Accesskey, awsAppSettings.SecretKey, RegionEndpoint.GetBySystemName(awsAppSettings.Region));
        }

        public async Task<SecretValueResponse> GetSecretValueAsync(SecretValueRequest secretValueRequest)
        {
            return _mapper.Map<SecretValueResponse>(await amazonSecretsManagerClient.GetSecretValueAsync(_mapper.Map<GetSecretValueRequest>(secretValueRequest)));
        }

所以我认为通过在应用程序设置文件中维护 AWS 凭证,我有点违背了使用秘密管理器的全部目的。我想知道这样做的正确方法是什么

【问题讨论】:

  • 我不熟悉 .Net SDK,但对于 Java、Python 和 JavaScript,您可以创建一个“默认”客户端,它将查看一系列位置(环境、配置、实例角色) 获取凭据。

标签: amazon-web-services .net-core aws-secrets-manager


【解决方案1】:

在代码中传递或添加 IAM 用户的 AWS 凭证(访问密钥和秘密访问密钥)不是一个好习惯。

相反,不要传递它并按如下方式更新您的代码:

amazonSecretsManagerClient = new AmazonSecretsManagerClient
                (RegionEndpoint.GetBySystemName(awsAppSettings.Region));

问题:那么它将如何访问 AWS 服务?

回答:如果您要在本地系统上执行代码,安装和配置 AWS CLI,而不是通过 CLI 或终端传递 AWS 凭证,它将使用这些 AWS 配置的凭证来访问AWS 服务。

AWS CLI 安装参考:Installing the AWS CLI

AWS CLI 配置参考:Configuring the AWS CLI

如果您要在 AWS 服务(例如,EC2 实例)上执行您的代码,请附加一个具有足够权限的 AWS 资源(例如,EC2 实例)的 IAM 角色,它将使用该 IAM 角色来访问 AWS 服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2022-08-19
    • 2017-10-02
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多