从AWS Secret Manager获取机密,而无需从配置中传递访问密钥和机密密钥

时间:2019-07-30 10:05:28

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

我正在使用AWS Secret Manager服务来检索一些机密信息,例如SMTP详细信息或连接字符串。但是,要从AWS Secret Manager服务中获得机密值,似乎我们需要将Access密钥和机密密钥与我们要检索的机密分开传递。所以我在配置文件中维护这些值。

        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凭证来克服使用秘密管理器的整个目的。我想知道什么是正确的方法

1 个答案:

答案 0 :(得分:1)

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

请不要传递它,并按如下所示更新代码:

response = client.post(url, data, content_type='application/json')

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

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

AWS CLI安装参考:Installing the AWS CLI

AWS CLI配置参考:Configuring the AWS CLI

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