You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS EC2中获取AWS Secrets Manager存储的加密数据库密码

AWS Secrets Manager KMS加密及EC2解密使用操作指南

1. 前置权限配置

你需要先为EC2实例关联的IAM角色添加以下权限:

  • Secrets Manager密钥读取权限:允许EC2拉取存储的密码密文
  • 对应KMS密钥的解密权限:如果你使用自定义KMS密钥加密Secrets Manager内容,需要单独添加该权限;如果使用Secrets Manager默认托管密钥aws/secretsmanager,无需额外配置KMS权限

示例IAM权限策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:<区域>:<账号ID>:secret:<你的密钥名称>-*"
        },
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:<区域>:<账号ID>:key/<自定义KMS密钥ID>"
        }
    ]
}

如果EC2没有公网访问权限,需要在对应VPC下配置Secrets Manager和KMS的VPC端点,保证网络连通性

2. EC2实例内解密及数据库连接操作

首先确保EC2实例内已安装AWS CLI v2及jq工具(用于解析JSON格式的密钥内容)。

2.1 拉取并解密密码

执行以下命令直接获取明文数据库密码:

aws secretsmanager get-secret-value \
  --secret-id <你的密钥ID/名称> \
  --region <AWS区域代码> \
  --query SecretString \
  --output text | jq -r '.password'

你可以将输出的密码赋值给变量,避免明文出现在命令历史中:

DB_PASS=$(aws secretsmanager get-secret-value --secret-id <你的密钥ID/名称> --region <AWS区域代码> --query SecretString --output text | jq -r '.password')

2.2 使用密码连接数据库

以MySQL为例,直接调用变量即可完成连接:

mysql -h <数据库地址> -u <数据库用户名> -p"${DB_PASS}"

操作完成后可手动清除环境变量:unset DB_PASS


内容的提问来源于stack exchange,提问作者satyajeet kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:54:01