AWS Secrets Manager 是一项强大的服务,用于安全地管理和存储敏感信息,如数据库凭证、API 密钥等。本实战指南将指导你如何在实际应用中使用 AWS Secrets Manager。

创建 Secret

首先,我们需要在 Secrets Manager 中创建一个新的 Secret 来存储敏感信息。

  1. 登录 AWS 控制台,选择 "Security, Identity, & Compliance" 下的 "Secrets Manager"。
  2. 在 Secrets Manager 控制台中,选择 "Store a new secret"。
  3. 选择要存储的凭证类型,例如 "Credentials for RDS database",并输入相应的凭证信息。
  4. 为 Secret 设置名称和描述。
  5. 选择 "Next",设置自动轮换策略(如果需要)。
  6. 选择 "Next",查看 Secret 详情。
  7. 选择 "Store",完成 Secret 的创建。

在应用中使用 Secret

在 Python 中使用 Secret

import boto3
from botocore.exceptions import ClientError

def get_secret():
    secret_name = "your-secret-name"
    region_name = "your-region-name"

    # Create a Secrets Manager client
    client = boto3.client('secretsmanager', region_name=region_name)

    # Retrieve the secret value
    try:
        get_secret_value_response = client.get_secret_value(
            SecretId=secret_name
        )
    except ClientError as e:
        if e.response['Error']['Code'] == 'ResourceNotFoundException':
            print(f"The secret {secret_name} was not found.")
        elif e.response['Error']['Code'] == 'InvalidRequestException':
            print(f"The request was invalid for secret {secret_name}")
        elif e.response['Error']['Code'] == 'InvalidParameterException':
            print(f"The parameter was invalid for secret {secret_name}")
        else:
            print(f"Error retrieving secret {secret_name}: {e}")
    else:
        secret_value = get_secret_value_response['SecretString']
        # Now you can use 'secret_value' in your Python application
        return secret_value

# Example usage
secret_data = get_secret()
print(secret_data)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.

在这个 Python 例子中,请将 "your-secret-name" 和 "your-region-name" 替换为你的 Secret 名称和 AWS 区域。

在 Java 中使用 Secret

import com.amazonaws.services.secretsmanager.*;
import com.amazonaws.services.secretsmanager.model.*;

public class SecretManagerExample {

    public static void main(String[] args) {
        String secretName = "your-secret-name";
        String region = "your-region-name";

        AWSSecretsManager client = AWSSecretsManagerClient.builder()
                .region(Region.of(region))
                .build();

        GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest()
                .withSecretId(secretName);

        GetSecretValueResponse getSecretValueResponse = client.getSecretValue(getSecretValueRequest);
        String secretValue = getSecretValueResponse.secretString();

        // Now you can use 'secretValue' in your Java application
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

在这个 Java 例子中,替换 "your-secret-name" 和 "your-region-name" 为你的 Secret 名称和 AWS 区域。

在 Node.js 中使用 Secret

const AWS = require('aws-sdk');

const secretName = 'your-secret-name';
const region = 'your-region-name';

const client = new AWS.SecretsManager({ region: region });

const params = {
    SecretId: secretName,
};

client.getSecretValue(params, function (err, data) {
    if (err) {
        console.log(err, err.stack);
    } else {
        const secretValue = data.SecretString;
        // Now you can use 'secretValue' in your Node.js application
    }
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

在这个 Node.js 例子中,替换 "your-secret-name" 和 "your-region-name" 为你的 Secret 名称和 AWS 区域。

更新 Secret

如果需要更改凭证信息,可以在 Secrets Manager 控制台中选择 Secret,然后选择 "Retrieve secret value",在打开的页面中选择 "Edit secret" 来更新 Secret。

删除 Secret

如果不再需要某个 Secret,可以在 Secrets Manager 控制台中选择 Secret,然后选择 "Delete secret" 来删除。注意,删除操作是不可逆的。

以上就是 AWS Secrets Manager 的实战指南。通过使用 Secrets Manager,你可以更安全、更有效地管理敏感信息,提高应用的安全性和可维护性。希望这个指南对你在 AWS 环境中使用 Secrets Manager 时有所帮助!