当前位置: 首页 > 知识库问答 >
问题:

如何在Terraform中使用secret manager创建Aurora无服务器数据库集群

林德惠
2023-03-14

我一直在读这一页:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_cluster

这里的示例主要针对已配置的数据库,我是无服务器数据库的新手,是否有使用存储在secret manager中的机密创建无服务器Aurora数据库集群(SQL db)的Terraform示例?

非常感谢。

共有3个答案

冯永长
2023-03-14

接受的答案将仅使用预设密码创建Aurora RDS实例——但不包括Secrets Manager。使用Secrets Manager是个好主意,这样您的数据库和应用程序(Lambdas、EC2等)就可以从Secrets Manager访问密码,而无需将其复制/粘贴到多个位置(例如应用程序配置)。

此外,通过使用随机密码对密码进行地形化,它将以明文形式存储在您的地形中。tfstate文件,这可能是一个问题。要解决此问题,还需要启用Secrets Manager自动秘密轮换。

自动旋转是Terraform的一种高级配置。它包括:

  • 部署Lambda,可访问RDS实例和机密
  • 通过aws\u secretsmanager\u secret\u旋转资源配置旋转

AWS为许多常见的旋转场景提供现成的lambda。具体的Lambda将根据数据库引擎(MySQL、Postgres、SQL Server、Oracle等)以及您是否将使用正在旋转的相同凭据连接到数据库而有所不同。

例如,当秘密旋转时,过程如下所示:

  • 调用旋转lambda,机密管理器将机密的名称作为参数传递

要使所有这些工作正常,您还需要考虑Lambda需要的权限——例如与RDS实例的网络连接和读取/写入机密的IAM权限。

如前所述,它有点高级,但会导致机密管理器成为密码的唯一持久位置。不过,一旦安装成功,您的应用程序就可以安全地从Secrets Manager中检索密码(最后一个提示——可以在应用程序中缓存密码,以减少Secrets Manager调用,但请确保在连接失败时刷新缓存,以便您的应用程序能够处理自动轮换)。

程天佑
2023-03-14

创建无服务极光的基本示例是:

resource "aws_rds_cluster" "default" {
  cluster_identifier      = "aurora-cluster-demo"
  engine                  = "aurora-mysql"  
  engine_mode             = "serverless"  
  database_name           = "myauroradb"  
  enable_http_endpoint    = true  
  master_username         = "root"
  master_password         = "chang333eme321"
  backup_retention_period = 1
  
  skip_final_snapshot     = true
  
  scaling_configuration {
    auto_pause               = true
    min_capacity             = 1    
    max_capacity             = 2
    seconds_until_auto_pause = 300
    timeout_action           = "ForceApplyCapacityChange"
  }  
}

我不知道你想对秘密经理做什么。你的问题并不清楚,所以我提供了一些例子。

丌官运诚
2023-03-14

我猜你想随机化master_password?你可以这样做:

master_password = random_password.DatabaseMasterPassword.result

SSM参数可以这样创建:

resource "aws_ssm_parameter" "SSMDatabaseMasterPassword" {
  name  = "database-master-password"
  type  = "SecureString"
  value = random_password.DatabaseMasterPassword.result
}

随机密码的定义如下:

resource "random_password" "DatabaseMasterPassword" {
  length           = 24
  special          = true
  override_special = "!#$%^*()-=+_?{}|"
}
 类似资料:
  • 问题内容: 任何人都可以提供使用Oracle数据库在JBoss服务器(5.0)中创建数据源的步骤。 提前致谢 问题答案: 本示例假定您使用的是Oracle 10i 。 在JBoss 5中,创建一个以结尾的XML文件(尽管不一定必须是XML文件)。带有以下描述符元素。 这是做Local-TX数据源的示例。 您可以具有多个元素,但 必须 唯一。 对于XA数据源,请参见此处的示例。 上面的示例保存在中。

  • 我尝试将从5.6更改为5.7,将engine从更改为,并为5.7指定新的参数组。 用这些更改更新堆栈将返回一个错误:

  • 根据这个http://www.grpc.io/docs/tutorials/basic/python.html#creating-这里的服务器和示例https://github.com/grpc/grpc/tree/v1.0.0/examples/python/route_guide,当我生成我的pb2时。py文件中,应创建几个名为Stub和Servicer的类。但是,我生成了pb2。py文件不包

  • 获取以下代码的错误 我得到的输出错误是

  • 我正在处理一个奇怪的问题,即使用JDBC在AmazonRDS上连接MySQL数据库。我有两部不同的Android手机在同一个网络上运行相同的代码。一个人连接起来没有任何问题。另一个是给我以下的例外: 数据库只显示1个活动连接,所以我知道这不是因为打开的连接太多。我尝试重新启动服务器,但没有帮助。我使用的是MySQL JDBC Connector/J版本5.1.23。工作的手机运行的是Android

  • 我正在尝试将本地SQL Server 2016 Enterprise Edition实例中的数据获取到云中。我遇到了一个障碍,所以如果有人对解决方法有任何指导,我真的很感谢你分享你的知识! 我计划使用AWS数据库迁移服务(aws.amazon.com),在这篇文章中我将其称为“DMS”。出于监管原因,数据库必须保持在本地,因此我需要不断地从该数据库中捕获数据并将其发送到云端。在这方面,我将使用更改