如何使用Boto3从AWS秘密管理器中获取以明文保存的密钥
在使用AWS平台进行应用程序开发时,常常需要使用各种各样的密钥(例如 API 密钥和访问密钥等)来保证应用程序的安全性和稳定性。但是,以明文方式在代码中保存密钥不是一个安全的做法。幸运的是,AWS 提供了一个能够解决这个问题的服务,那就是 AWS Secrets Manager。本文将会阐述如何使用 Boto3(AWS Python SDK)从 AWS 秘密管理器中获取以明文保存的密钥。
阅读更多:Python 教程
第一步:创建一个 AWS 秘密管理器
在使用 AWS Secrets Manager 之前,必须在 AWS 中创建一个秘密存储库。用户可以登录 AWS 控制台并选择 Secrets Manager,创建一个新的 Secret。
接下来,选择“其他秘密类型”中的“凭据”。输入凭据的相关信息,例如鉴别程序和应用程序所需的用户名和密码等敏感信息。然后,设置“Secret name”(秘密名称),这个名称将用于后面的代码中进行引用。
如果需要获得更详细的创建 AWS 秘密管理器的步骤信息,请参见 AWS 官方文档。
第二步:使用 Boto3 访问 AWS 秘密管理器
在创建 AWS 秘密管理器后,现在开始使用 Boto3 访问它。AWS SDK 使得从密钥中检索信息变得方便,而且不需要再直接从代码中提取密钥并进行明文保存了。
下面是一个使用 Python 的示例代码:
import boto3
import json
secret_name = "your-secret-name"
region_name = "us-east-1"
# Create a SecretsManager client
client = boto3.client('secretsmanager', region_name=region_name)
# Get secret value
response = client.get_secret_value(
SecretId=secret_name
)
secret = response['SecretString']
secret_dict = json.loads(secret)
首先,使用 boto3
创建一个 AWS 客户端。secret_name
变量将存储我们 AWS 秘密管理器中的秘密名称。region_name
变量将指定 AWS 区域。
接下来,使用 get_secret_value
方法从 AWS 秘密管理器检索存储在秘密中的值。然后,将获取到的 JSON 字符串转换成 Python 字典以方便我们获取秘密信息的值。
第三步:使用已检索的秘密信息
现在已经成功从 AWS 秘密管理器检索到了以明文方式保存的密钥。可以将密钥信息用于我们的应用程序中(例如,数据库连接字符串或者 API 密钥),而无需将它们以明文方式暴露在代码中。
下面是一个使用检索的密钥信息的示例代码:
import psycopg2
# Use retrieved secret data
database = secret_dict['database']
username = secret_dict['username']
password = secret_dict['password']
host = secret_dict['host']
port = secret_dict['port']
# Create a database connection
conn = psycopg2.connect(
dbname=database,
user=username,
password=password,
host=host,
port=port
)
# Do something with the database connection
...
这个示例代码展示了检索到的数据库连接字符串的使用方法。使用密钥信息,代码可以创建一个 PostgreSQL 数据库连接。
结论
AWS Secrets Manager 提供了一种方便且安全的方法来管理和检索以明文方式保存的密钥。结合 Boto3 SDK,可以轻松地检索保存在 Secrets Manager 中的密钥,而无需公开以明文方式在应用程序中使用这些密钥。