验证用于创建Cloudera数据平台环境的aws资源

cdp-validator-for-aws的Python项目详细描述


aws的cdp验证程序

概述

此工具验证是否已为正确设置了AWS资源 由Cloudera Data Platform(cdp)使用,以便cdp可以使用这些 资源来创建环境,如Cloudera documentation中定义的。在

运行工具

要验证的资源记录在json文件中(称为 my_cdp.json以下)。在

验证使用AWS服务,因此需要一个具有足够 权限。我们在示例中设置并使用一个名为validator的角色 下面。在

以上两种情况将在本文档后面进行详细描述。在

一旦您满足了上述先决条件,那么执行就很简单:

python -m cdp_validator_for_aws -c my_cdp_file.json --profile validator

设置

Python包

我们建议使用python虚拟环境并安装它 打包到那个环境中。这将有助于消除 执行此工具时的环境问题。在

CDP JSON文件

这个工具使用一个json文件(我们在 上面的例子,但是它的名字并不重要)来输入信息 关于要检查的资源。在

此文件的格式如下所示(可能有额外的 元素-我们显示的元素是关键的元素)并且 从cdp gui生成。但是有两个要素 not由gui生成并手动添加。它们是:

  • idBrokerInstanceProfileArn1
  • storageLocationBase
^{pr2}$

下面用jsonpath表示这些字段的含义 字段:

  • aws.s3guard.dynamoDbTableName:dynamo db表的名称 创造
  • idBrokerInstanceProfileArn:idbroker实例的arn 用于运行idbrokerec2实例的profile
  • idBrokerMappings.baselineRole:管理员角色的arn,用于 管理CDP datalake中的数据
  • idBrokerMappings.dataAccessRole:ranger审计角色的arn
  • location.name:这些资源的AWS区域
  • network.aws.vpcId:专有网络id
  • network.subnetIds:将由 CDP公司
  • securityAccess.defaultSecurityGroupId:默认安全性的Id 集团
  • securityAccess.securityGroupIdForKnox:安全组的Id 对于诺克斯
  • storageLocationBase:指向bucket的s3a://url,其中 数据将存储在数据湖中
  • telementery.logging.s3.instanceProfile:实例的arn 将运行日志记录系统的配置文件
  • telemetry.logging.storageLocation:记录日志的s3a://url 将被放置。在

AWS设置

AWS需要正确设置才能使此工具工作。在

CLI

我们假设您已经按照AWS CLI Documentation安装并配置了awscli

权限

运行cdp_validator_for_aws所需的最小权限为:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeVpcAttribute",
                "eks:ListClusters",
                "iam:GetContextKeysForPrincipalPolicy",
                "iam:GetInstanceProfile",
                "iam:GetRole",
                "iam:SimulatePrincipalPolicy",
                "s3:GetBucketLocation",
                "s3:HeadBucket"
            ],
            "Resource": "*"
        }
    ]
}

对安全性影响最大的权限是 需要模拟各种角色 (iam:GetContextKeysForPrincipalPolicy&; iam:SimulatePrincipalPolicy),作为 documented 美国焊接学会。cdp_validator_for_aws将尽可能多地使用您的任何权限 可以给它。在

cdp_validator_for_aws接受一个--profile profile_name参数,如 根据通常的AWS CLI,所有的呼叫都会转到Amazon的 boto3 包做实际工作。在

设置权限结构

假设您已经设置好使用 default使用您通常获得的任何权限配置文件。在

  1. 创建一个角色(将其称为cdp_validation),该角色:
    1. 信任您的default角色
    2. 拥有以上权限(或大部分权限)
  2. ${HOME}/.aws/credentials中输入以下内容:
[validator]
role_arn = arn:aws:iam::YOUR_AWS_ACCOUNT_ID:role/cdp_validation
source_profile = default

现在您可以运行验证器:

python -m cdp_validator_for_aws -c my_cdp_file.json --profile validator

配置

不需要配置。以下信息仅供参考 文件目的。在

策略管理

Cloudera的documentation显示了各种策略文件 它们结合起来,使四个角色中的每一个都有必要 各种资源的权限。在

这些文件位于包的policies目录中,它们是 根据Cloudera在 Minimal setup for cloud storage。 他们控制着空调为每个项目模拟的选项和资源 角色。如果将来操作发生更改,则这些文件可以 简单更新。如果资源中的变量发生变化,那么我 恐怕您必须更改代码(请查看policy_manager.py 开始)

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

推荐PyPI第三方库


热门话题
java我在SearchView谷歌地图中遇到问题   java Oracle将空字符串转换为null,但JPA不会相应地更新实体缓存   javascript Webview未显示该页面   java无法解析“JSONObject”中的方法“toMap”   Web服务的简单java客户端代码与QName有关吗?   跨不同测试类共享TestNG设置Selenium Java   java如何将Spring OAuth2服务器集成到Liferay中   java无法解析导入sun   使用1个变量的java Fibonacci   java如何从活动中调用片段活动?   html Java/HtmlUnit如何从HtmlImageInput获取HtmlImage?   JavaGoogleMapsAPIv2显示空白地图   Java:printstream输出奇怪,为什么toString不转换?   linux为什么有时候JVM会被卡住几秒钟,然后在java中再次恢复?   Java在流中丢失国际字符   java More Mockito返回\u DEEP\u STUBS悲哀   java有没有办法仅从jdbc数据库url恢复数据库(.db或.mdb文件)?   java ArrayList removeAll()不删除对象