包以创建具有自动旋转功能的SecretsManager机密。

aws-secret-cdk的Python项目详细描述


AWS秘密Cdk

创建和提供机密的库 AWS SecretsManager。 这个库使我们很容易用 secret rotation。在

备注

项目由Laimonas Sutkus编写 并且归iDenfy所有。这是一个开放源码 供任何人使用的图书馆。iDenfy目标 分享知识和教育市场,以获得更好、更安全的IT基础设施。在

相关技术

本项目采用以下技术:

  • AWS(亚马逊网络服务)。在
  • AWS CDK(Amazon网络服务云开发工具包)。在
  • AWS CloudFormation。在
  • AWS SecretsManager。在

假设

此库项目假定如下:

  • 你对AWS(amazonwebservices)有一定的了解。在
  • 您对AWS CloudFormation和AWS SecretsManager有一定的了解。在
  • 您正在使用AWS CDK管理您的基础设施。在
  • 您正在用python语言编写AWS CDK模板。在

安装

项目被构建并上传到PyPi。用pip安装。在

pip install aws-secret-cdk

或者直接通过源代码安装。在

^{pr2}$

说明

SecretsManager是一个伟大的AWS服务来管理您的机密,例如数据库 密码。通过AWS创建和配置秘密非常容易 控制台(UI)。然而众所周知,创建和管理它是非常困难的 云层形成的秘密。您需要创建一个lambda函数,该函数 执行秘密旋转,确保lambda函数权限正确,并且 安全组,使用正确的模板正确配置机密本身,等等。 这个图书馆解决了这个问题。在一个 简单地说,你只需要提供一个数据库,就可以对其应用机密, 还有其他一些参数。就这样!你可以走了。在

需要注意的是,这个库可以用于existing数据库。在

示例

下面是如何在各种情况下使用此库的示例。在

RDS(MySql和Aurora MySql兼容)单用户轮换

要为具有30天轮换的RDS数据库创建SecretsManager机密,请创建 Secret实例。在

fromaws_cdk.coreimportStackfromaws_cdk.aws_ec2importVpcfromaws_cdkimportaws_rdsfromaws_secret_cdk.vpc_parametersimportVPCParametersfromaws_secret_cdk.aurora_mysql_single_user.secretimportSecretclassMyStack(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)

差不多就是这样。从现在起你的数据库密码将被存储 在一个秘书经理那里,每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/importboto3importbase64frombotocore.exceptionsimportClientErrordefget_secret():secret_name="test"region_name="eu-west-1"# Create a Secrets Manager clientsession=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)exceptClientErrorase:# Some error happened here. Log it / handle it / raise it.raiseeelse:if'SecretString'inget_secret_value_response:secret=get_secret_value_response['SecretString']else:secret=base64.b64decode(get_secret_value_response['SecretBinary'])returnsecret

发布历史记录

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秘密cdk包是完全功能和可用的。在

4.0.0

不要强制执行KMS CMK。使用lambda函数部署源代码 而不是S3桶。使用更好的前缀。重构lambda函数源代码 支持现有数据库上的初始密码。警告:权限已松动。 下一次提交应该修复它们。在

3.0.1

更新自述文件。在

3.0.0

缩短lambda bucket name。在

2.0.3

一致的命名。在

2.0.2

添加docstring。在

2.0.1

固定目标类型和目标ARN。在

2.0.0

一般错误修复。添加KMS密钥资源的权限。添加秘密模板。在

1.0.9

添加secrets manager作为有效主体来调用旋转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

确保bucket和bucket部署具有不同的名称。在

1.0.0

初始提交。增加能力,创建RDS秘密和旋转它每30天。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Dropwizard中的Minio检索文件时,GET请求中的超时是如何处理的?   带Hibernate的java Jackson用于序列化以避免枚举   Raspberry Pi上的java Jave分段错误   java在屏幕旋转时不保存当前片段和数据   java War文件未在Heroku上正确部署   如何使用Java处理Selenium webdriver中的促销广告或cookie   java处理“用法:PApplet[options]<classname>[sketch args]”   java文本文件错误扫描程序   运行第一个JavaFX模块化程序时出现java异常   java将fileoutputstream转换为字符串   如何调试gstreamerjava?   java Spring RestTemplate ResponseBody类是什么样的   如何将JSON数组转换为Java列表。我在用斯文森   javascript在显示div按钮后进入新页面