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