AWS Secrets Manager 是一项服务,可帮助您安全地存储和管理敏感数据,例如 API 密钥、密码和数据库凭证。AWS Secrets Manager 的一个常见用例是管理应用程序中的 配置变量。在 Secrets Manager 中安全存储配置变量可以减少代码中泄露敏感数据的风险,并增强您的安全状况。
本文将指导您如何在 AWS Secrets Manager 服务中设置环境变量的步骤,以及如何检索它们以在您的应用程序中使用它们。
前提条件
在设置AWS Secrets Manager的环境变量之前,确保你已经做好以下准备:
- AWS 账户:要使用 Secrets Manager,你需要一个 AWS 账户。
- AWS CLI/SDK:请确保你已经安装了 AWS CLI 或将 SDK 集成到你的应用程序中,以便与 Secrets Manager 进行交互。
- IAM 权限:确保你拥有创建和访问 AWS Secrets Manager 中的密文所需的 IAM 权限。
- 登录到AWS管理控制台。
- 在安全、身份和合规性部分,找到并点击Secrets Manager。
在 Secrets Manager 仪表板中,点击 保存新秘密。
选择其他类型的秘密,如果您是以键值对的形式存储环境变量的话。
请输入环境设置,格式为 键值对 的形式。比如:
admin我的超秘密码API_KEYxxxxxxxxAPP_SECRET_KEYzzzzzzzz
将变量的名称作为键,实际值作为值输入。
点击下一步来继续往下。
1.3 代号及其描述给它起个名字,例如 MyAppEnvVars
。这个名字将帮助你以后更容易找到这个密钥。
可选地,您还可以提供一个描述(例如:‘MyApp 的环境设置’)。
点下一步。
1.4 设置密钥访问权限选择具有访问该密钥权限的 AWS IAM 角色或用户。您可以授予特定角色或用户访问权限,或者采用默认设置。
你可以启用密钥的自动旋转,尽管这是可选的。对于环境变量来说,通常不需要自动旋转,除非你存储的是像 API 密钥这样需要定期更改的秘密。
点击 下一步 按钮。
1.5 审查并保存秘密查看详细信息,然后点击保存来保存信息。
你现在已经把环境变量值安全地存到“AWS Secrets Manager”里了。
顶尖机器学习课程,帮助你提升职业发展 机器学习已经成为科技专业人员必备的技能。这里有许多优质的机器学习课程供你选择……www.goexam.today 步骤二:从 AWS Secrets Manager 获取变量一旦环境变量或密钥被存储,你就可以在应用程序中访问它们。AWS 提供了几种包括但不限于通过 AWS SDK、AWS CLI 或通过将 IAM 角色附加到实例来获取这些密钥或秘密的方法。
2.1 使用 AWS SDK(比如 Node.js)你可以通过以下方式使用 AWS SDK for Node.js*** 从 AWS Secrets Manager 检索环境变量:
安装AWS SDK。
npm install aws-sdk
执行此命令以安装 AWS SDK
查看你 Node.js 代码中的秘密:
const AWS = require('aws-sdk'); const secretsManager = new AWS.SecretsManager(); const secretName = 'MyAppEnvVars'; // 存储在 Secrets Manager 中的密钥名,用于获取环境变量值 // 获取密钥值的函数 const getSecretValue = async () => { try { const data = await secretsManager.getSecretValue({ SecretId: secretName }).promise(); if (data.SecretString) { const secrets = JSON.parse(data.SecretString); console.log('DB_USERNAME:', secrets.DB_USERNAME); // 访问单个变量值 console.log('DB_PASSWORD:', secrets.DB_PASSWORD); } } catch (err) { console.error('获取密钥值出错:', err); } }; getSecretValue();
这将提取存储在密钥中的环境变量并记录它们。
2.2 使用 AWS 命令行界面 (CLI) 检索密钥您也可以使用 AWS CLI 来获取并使用密钥信息。这在测试或手动检索时非常有用。
运行下面的命令,
aws secretsmanager get-secret-value --secret-id MyAppEnvVars --query SecretString --output text
这条命令会返回存储在 MyAppEnvVars
secret 中的值。你可以根据需要处理结果。
如果你的应用运行在EC2实例上或作为AWS Lambda函数运行,你可以通过附加具有适当权限的IAM角色来授予其访问 Secrets Manager 的权限。
- 附加IAM策略到EC2实例或Lambda执行角色:创建一个具有
secretsmanager:GetSecretValue
权限(权限类型)的IAM策略,并将其附加到EC2实例或Lambda执行角色。 - 访问密钥值:使用相同的代码示例通过
AWS SDK
获取密钥值。
一旦从 AWS Secrets Manager 中检索到环境变量,你可以像使用其他环境变量一样使用它们。这里有一个示例,说明如何在数据库连接字符串中的,或在 API 请求中的使用这些值。
数据库连接的例子: const dbUsername = secrets.DB_USERNAME;
const dbPassword = secrets.DB_PASSWORD;
const connectionString = `mongodb://username:password@localhost:27017/mydatabase`;
const connectToDatabase = async () => {
try {
// 使用从 secrets 中获取的用户名和密码连接到数据库
await mongoose.connect(connectionString.replace('username', dbUsername).replace('password', dbPassword));
console.log('已连接到数据库');
} catch (err) {
console.error('数据库连接失败', err);
}
};
connectToDatabase();
顶尖的机器学习课程,助力你的职业发展机器学习已成为技术专业人士的必备技能。有很多优秀的机器学习课程可以供你选择……www.goexam.today