使用自动轮换创建 SecretsManager 的密钥的包。
项目描述
AWS 秘密 Cdk
由 AWS SecretsManager创建和预置密钥的库。这个库可以很容易地通过 秘密轮换创建秘密。
评论
该项目由Laimonas Sutkus编写, 归iDenfy所有。这是一个供任何人使用的开源库。iDenfy旨在分享其知识并为市场提供更好、更安全的 IT 基础设施。
相关技术
本项目采用以下技术:
- AWS(亚马逊网络服务)。
- AWS CDK(亚马逊网络服务云开发工具包)。
- AWS CloudFormation。
- AWS SecretsManager。
假设
这个库项目假设如下:
- 您具有 AWS(亚马逊网络服务)方面的知识。
- 您了解 AWS CloudFormation 和 AWS SecretsManager。
- 您正在使用 AWS CDK 管理您的基础设施。
- 您正在使用 Python 语言编写 AWS CDK 模板。
安装
该项目已构建并上传到 PyPi。使用 pip 安装它。
pip install aws-secret-cdk
或者直接通过源码安装。
./build.sh -ic
描述
SecretsManager 是一个很棒的 AWS 服务来管理你的秘密,例如数据库密码。通过 AWS 控制台 (UI) 创建和配置密钥非常容易。然而,通过 CloudFormation 创建和管理机密是出了名的困难。您需要创建一个 lambda 函数,该函数执行秘密轮换,确保正确的 lambda 函数权限和安全组,使用正确的模板正确配置秘密本身等。这个库解决了这个问题。简而言之,您只需提供一个数据库,应为其应用秘密,以及其他一些参数。就是这样!你可以走了。
一个重要的注意事项 - 该库可用于现有数据库。
例子
以下是有关如何在各种场景中使用此库的示例。
RDS(MySql 和 Aurora MySql 兼容)单用户轮换
要为 30 天轮换的 RDS 数据库创建 SecretsManager 密钥,请创建一个
Secret实例。
from aws_cdk.core import Stack
from aws_cdk.aws_ec2 import Vpc
from aws_cdk import aws_rds
from aws_secret_cdk.vpc_parameters import VPCParameters
from aws_secret_cdk.aurora_mysql_single_user.secret import Secret
class MyStack(Stack):
def __init__(self, **kwargs):
super().__init__(**kwargs)
# Suppose you have defined a VPC.
self.vpc = Vpc(**kwargs)
# Suppose you have a database (or a cluster).
self.database = aws_rds.CfnDBCluster(**kwargs)
# Now simply create a secret with 30 day rotation.
self.rds_secret = Secret(
stack=self,
prefix='MyResourcesPrefix',
vpc_parameters=VPCParameters(
rotation_lambda_vpc=self.vpc,
rotation_lambda_security_groups=[
# Your SG's.
],
# NOTE! Ensure that your private subnets have a NAT gateway
# or have a VPC endpoint in order to reach SecretsManager
# API which is outside your own VPC.
rotation_lambda_subnets=self.vpc.private_subnets
),
database=self.database
)
差不多就是这样。从现在开始,您的数据库密码将存储在 SecretsManager 中,并且每 30 天轮换一次。
使用新的秘密
为了检索秘密,请使用下面的示例代码。
# Use this code snippet in your app.
# If you need more information about configurations or implementing the sample code, visit the AWS docs:
# https://aws.amazon.com/developers/getting-started/python/
import boto3
import base64
from botocore.exceptions import ClientError
def get_secret():
secret_name = "test"
region_name = "eu-west-1"
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name
)
try:
get_secret_value_response = client.get_secret_value(
SecretId=secret_name
)
except ClientError as e:
# Some error happened here. Log it / handle it / raise it.
raise e
else:
if 'SecretString' in get_secret_value_response:
secret = get_secret_value_response['SecretString']
else:
secret = base64.b64decode(get_secret_value_response['SecretBinary'])
return secret
发布历史
5.3.0
包括 MD 文件。
5.2.0
更新到 1.60.0 并添加 2.0.0 的依赖上限。
5.1.0
强制更新到 CDK 1.44.0。
5.0.0
重组项目时要牢记不同类型的轮换是可能的,例如 DynamoDB 密钥轮换或 RDS 多用户密钥轮换。缩小了轮换所需的权限。在此版本中,aws-secret-cdk 包功能齐全且可供使用。
4.0.0
不要强制执行 KMS CMK。使用资产来部署 lambda 函数源代码,而不是 S3 存储桶。使用更好的前缀。重构 lambda 函数源代码以支持现有数据库上的初始密码。警告:放宽权限。下一次提交应该修复它们。
3.0.1
更新自述文件。
3.0.0
缩短 lambda 存储桶名称。
2.0.3
一致的命名。
2.0.2
添加文档字符串。
2.0.1
修复目标类型和目标arns。
2.0.0
一般错误修复。添加 KMS 密钥资源的权限。添加秘密模板。
1.0.9
将秘密管理器添加为有效主体以调用轮换 lambda。
1.0.8
添加 S3 删除策略。
1.0.7
不要使用托管策略。
1.0.6
Aws Lambda 依赖项更新。
1.0.5
Aws Lambda 依赖项更新。
1.0.4
不要创建代码类实例。
1.0.3
将包移动到主包中。
1.0.2
修复清单文件。
1.0.1
确保存储桶和存储桶部署具有不同的名称。
1.0.0
初始提交。添加创建 RDS 密钥并每 30 天轮换一次的功能。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
aws_secret_cdk -5.3.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 1afc519c8d2d0b88a58816b75b70c7d25717a30330951e706eeeda32939f7b84 |
|
| MD5 | 98210e5f1d68d485651762d57abc3cce |
|
| 布莱克2-256 | 8250b63efb38b8d9f3450ae6aaed7431c1cc50efc7cb717e251fc82ad2568842 |
aws_secret_cdk -5.3.0-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a93f960987a522022e9cf5d5445f6cfc8b5f29e627d77afdb74c143c1b936cdd |
|
| MD5 | 802ee46108818d2337eb2411d07628eb |
|
| 布莱克2-256 | 977b44f0302d34f0780ffbef2782c14aa87205bf4d4e6ece7b217304eea29f30 |