如何使用秘密管理器为 RDS 创建 DMS 目标端点

问题描述 投票:0回答:2

我们如何通过提供 Secret Manager ARN 来使用 Terraform 创建 RDS 的 DMS 端点来获取凭证?我查看了文档,但找不到任何东西。

amazon-web-services terraform terraform-provider-aws aws-secrets-manager aws-dms
2个回答
1
投票

当前存在开放功能请求,要求 DMS 本机使用密钥管理器连接到您的 RDS 实例。这有一个链接的拉取请求,最初暂时添加了对 PostgreSQL 和 Oracle RDS 实例的支持,但目前尚未审核,因此很难知道该功能何时会发布。 如果您不使用自动秘密轮换(或者可以在轮换后重新运行 Terraform)并且不介意将密码存储在状态文件中,但仍想使用存储在 AWS Secrets Manager 中的秘密,那么您可以让 Terraform 检索在应用时从 Secrets Manager 获取机密,并使用该机密使用用户名和密码组合来配置 DMS 端点。

一个基本的例子看起来像这样:

data "aws_secretsmanager_secret" "example" { name = "example" } data "aws_secretsmanager_secret_version" "example" { secret_id = data.aws_secretsmanager_secret.example.id } resource "aws_dms_endpoint" "example" { certificate_arn = "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012" database_name = "test" endpoint_id = "test-dms-endpoint-tf" endpoint_type = "source" engine_name = "aurora" extra_connection_attributes = "" kms_key_arn = "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" password = jsondecode(data.aws_secretsmanager_secret_version.example.secret_string)["password"] port = 3306 server_name = "test" ssl_mode = "none" tags = { Name = "test" } username = "test" }



0
投票
本地

引用机密。要使用的代码类似于以下内容: resource "aws_dms_endpoint" "test" { database_name = "test" endpoint_id = "test-dms-endpoint" endpoint_type = "source" engine_name = "postgres" kms_key_arn = "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" secrets_manager_access_role_arn = "arn:aws:iam::123456789012:role/role-name-with-path" secrets_manager_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:<SecretName-6RandomCharacters>" tags = { "Name" = "db-migration-target" } }

附带说明,请确保该角色的权限策略允许从 Secrets Manager 读取机密,并且也存在 
"iam:PassRole"

的权限。

    

© www.soinside.com 2019 - 2024. All rights reserved.