创建跨帐号IAM角色

了解如何设置跨帐户IAM角色,使Databricks能够在您的AWS帐户中部署工作区。

创建跨帐号角色

  1. 带上你的数据库外部ID(帐户ID)。当您在AWS帐户中创建AWS跨帐户IAM角色时,您需要它。

    账户控制台点击右上角用户名旁边的向下箭头。下帐户ID,选择并复制ID。

    您还可以找到这个ID(标记为外部ID)去云资源>证书配置>增加证书配置

  2. 以具有管理员权限的用户登录AWS控制台,然后转到控制台。

  3. 单击角色选项卡。

  4. 点击创建角色

    1. 选择受信任实体类型,按AWS帐户瓷砖。

    2. 选择另一个AWS帐户复选框。

    3. 在“帐户ID”字段中输入Databricks帐户ID414351767826

      这是从Databricks帐户控制台复制的帐户ID。

      可信实体类型
    4. 选择需要外部ID复选框。

    5. 外部ID字段,输入您从Databricks帐户控制台复制的Databricks帐户ID。

    6. 单击下一步:添加权限按钮。

    7. 单击接下来:命名、检查和创建按钮。

    8. 角色名字段,输入角色名。

      步骤1:选择可信实体JSON应该如下所示:

      “版本”“2012-10-17”,“声明”“效应”“允许”,“行动”“sts: AssumeRole”,“校长”“AWS”“414351767826”},“条件”“StringEquals”“sts: ExternalId”“YOUR_EXTERNAL_ID”}}}}
    9. 点击创建角色.将显示角色列表。

创建访问策略

要创建新的工作空间,必须在跨帐户IAM角色上设置访问策略。此策略根据您的Amazon VPC(虚拟私有云)部署类型和您的限制而有所不同。有三种政策选择:

重要的

这些策略假设工作空间使用安全集群连接,有时称为无公共IP (NPIP)。自2020年9月1日起,对于使用Account API创建的工作空间,安全集群连接是默认的。如果您的工作空间没有使用安全集群连接(NPIP),请与Databricks代表联系。

默认部署策略

下面的步骤包括在Databricks在您的AWS帐户中创建和配置的VPC中启动Databricks工作空间的访问策略。有关Databricks如何使用每种权限的信息,请参见数据库管理VPC的IAM权限

  1. 在角色列表中,单击已创建的角色。

  2. 添加内联策略。

    1. 权限选项卡上,单击添加内联策略

      内联政策
    2. 在策略编辑器中,单击JSON选项卡。

      JSON编辑器
    3. 将Databricks创建并配置的在VPC中部署工作区的访问策略复制到您的AWS帐户中。

      “版本”“2012-10-17”,“声明”“席德”“Stmt1403287045000”,“效应”“允许”,“行动”“ec2: AllocateAddress”,“ec2: AssociateDhcpOptions”,“ec2: AssociateIamInstanceProfile”,“ec2: AssociateRouteTable”,“ec2: AttachInternetGateway”,“ec2: AttachVolume”,“ec2: AuthorizeSecurityGroupEgress”,“ec2: AuthorizeSecurityGroupIngress”,“ec2: CancelSpotInstanceRequests”,“ec2: CreateDhcpOptions”,“ec2: CreateInternetGateway”,“ec2: CreateNatGateway”,“ec2: CreateRoute”,“ec2: CreateRouteTable”,“ec2: CreateSecurityGroup”,“ec2: CreateSubnet”,“ec2: CreateTags”,“ec2: CreateVolume”,“ec2: CreateVpc”,“ec2: CreateVpcEndpoint”,“ec2: DeleteDhcpOptions”,“ec2: DeleteInternetGateway”,“ec2: DeleteNatGateway”,“ec2: DeleteRoute”,“ec2: DeleteRouteTable”,“ec2: DeleteSecurityGroup”,“ec2: DeleteSubnet”,“ec2: DeleteTags”,“ec2: DeleteVolume”,“ec2: DeleteVpc”,“ec2: DeleteVpcEndpoints”,“ec2: DescribeAvailabilityZones”,“ec2: DescribeIamInstanceProfileAssociations”,“ec2: DescribeInstanceStatus”,“ec2: DescribeInstances”,“ec2: DescribeInternetGateways”,“ec2: DescribeNatGateways”,“ec2: DescribePrefixLists”,“ec2: DescribeReservedInstancesOfferings”,“ec2: DescribeRouteTables”,“ec2: DescribeSecurityGroups”,“ec2: DescribeSpotInstanceRequests”,“ec2: DescribeSpotPriceHistory”,“ec2: DescribeSubnets”,“ec2: DescribeVolumes”,“ec2: DescribeVpcs”,“ec2: DetachInternetGateway”,“ec2: DisassociateIamInstanceProfile”,“ec2: DisassociateRouteTable”,“ec2: ModifyVpcAttribute”,“ec2: ReleaseAddress”,“ec2: ReplaceIamInstanceProfileAssociation”,“ec2: RequestSpotInstances”,“ec2: RevokeSecurityGroupEgress”,“ec2: RevokeSecurityGroupIngress”,“ec2: RunInstances”,“ec2: TerminateInstances”),“资源”“*”},“效应”“允许”,“行动”“我:CreateServiceLinkedRole”,“我:PutRolePolicy”),“资源”“攻击:aws:我::*:角色/ aws-service-role / spot.amazonaws.com/AWSServiceRoleForEC2Spot”,“条件”“StringLike”“我:AWSServiceName”“spot.amazonaws.com”}}}}
    4. 点击审查政策

    5. 的名字字段,输入策略名称。

    6. 点击创建政策

    7. 如果你使用业务控制策略以拒绝AWS帐户级别的某些操作,确保sts: AssumeRole是allowlist,因此Databricks可以承担跨帐户角色。

  3. 在角色摘要中,复制的角色是

    的角色是

由客户管理的VPC,默认策略限制

下面的步骤包括在客户管理的VPC中启动Databricks工作空间的访问策略(默认策略限制)。有关Databricks如何使用每种权限的信息,请参见客户管理VPC的IAM权限

  1. 以具有管理员权限的用户登录AWS控制台,然后转到控制台。

  2. 单击角色选项卡。

  3. 在角色列表中,单击跨帐号IAM角色你为Databricks创建的。

  4. 添加内联策略。

    1. 权限选项卡上,单击添加内联策略

      内联政策
    2. 在策略编辑器中,单击JSON选项卡。

      JSON编辑器
    3. 复制下面用于部署工作区的访问策略由客户管理的VPC,默认限制

      “版本”“2012-10-17”,“声明”“席德”“Stmt1403287045000”,“效应”“允许”,“行动”“ec2: AssociateIamInstanceProfile”,“ec2: AttachVolume”,“ec2: AuthorizeSecurityGroupEgress”,“ec2: AuthorizeSecurityGroupIngress”,“ec2: CancelSpotInstanceRequests”,“ec2: CreateTags”,“ec2: CreateVolume”,“ec2: DeleteTags”,“ec2: DeleteVolume”,“ec2: DescribeAvailabilityZones”,“ec2: DescribeIamInstanceProfileAssociations”,“ec2: DescribeInstanceStatus”,“ec2: DescribeInstances”,“ec2: DescribeInternetGateways”,“ec2: DescribeNatGateways”,“ec2: DescribeNetworkAcls”,“ec2: DescribePrefixLists”,“ec2: DescribeReservedInstancesOfferings”,“ec2: DescribeRouteTables”,“ec2: DescribeSecurityGroups”,“ec2: DescribeSpotInstanceRequests”,“ec2: DescribeSpotPriceHistory”,“ec2: DescribeSubnets”,“ec2: DescribeVolumes”,“ec2: DescribeVpcAttribute”,“ec2: DescribeVpcs”,“ec2: DetachVolume”,“ec2: DisassociateIamInstanceProfile”,“ec2: ReplaceIamInstanceProfileAssociation”,“ec2: RequestSpotInstances”,“ec2: RevokeSecurityGroupEgress”,“ec2: RevokeSecurityGroupIngress”,“ec2: RunInstances”,“ec2: TerminateInstances”),“资源”“*”},“效应”“允许”,“行动”“我:CreateServiceLinkedRole”,“我:PutRolePolicy”),“资源”“攻击:aws:我::*:角色/ aws-service-role / spot.amazonaws.com/AWSServiceRoleForEC2Spot”,“条件”“StringLike”“我:AWSServiceName”“spot.amazonaws.com”}}}}
    4. 点击审查政策

    5. 的名字字段,输入策略名称。

    6. 点击创建政策

    7. 如果你使用业务控制策略以拒绝AWS帐户级别的某些操作,确保sts: AssumeRole是allowlist,因此Databricks可以承担跨帐户角色。

  5. 在角色摘要中,复制的角色是

    的角色是

由客户管理的VPC,自定义策略限制

下面的步骤包括在客户管理的VPC中启动Databricks工作空间的访问策略(有自定义策略限制)。有关Databricks如何使用每种权限的信息,请参见客户管理VPC的IAM权限

请注意

是Databricks生产AWS帐户,从中获取Amazon Machine Images (AMI)601306020600.您可以使用此帐户Id创建自定义访问策略,以限制可以在AWS帐户中使用哪些ami。请联系您的Databricks代表以获取更多信息。

  1. 以具有管理员权限的用户登录AWS控制台,然后转到控制台。

  2. 单击角色选项卡。

  3. 在角色列表中,单击跨帐号IAM角色你为Databricks创建的。

  4. 添加内联策略。

    1. 权限选项卡上,单击添加内联策略

      内联政策
    2. 在策略编辑器中,单击JSON选项卡。

      JSON编辑器
    3. 复制下面用于部署工作区的访问策略用户管理的VPC,自定义帐号ID、VPC ID、区域、安全组限制。

      请将策略中的以下值替换为自己的配置值:

      • ACCOUNTID-您的AWS帐户ID,这是一个数字。

      • VPCID—要启动工作区的AWS VPC ID。

      • 地区—AWS以VPC部署时使用的“区域名称”为例us-west-2

      • SECURITYGROUPID—AWS安全组ID。添加安全组限制时,不能重用跨帐户IAM角色,也不能引用凭据ID (credentials_id)用于任何其他工作区。对于那些其他工作区,您必须创建单独的角色、策略和凭证对象。

      请注意

      如果您为安全组配置了自定义需求customer-managed vpc,请与您的Databricks代表联系以自定义IAM策略。

      “版本”“2012-10-17”,“声明”“席德”“NonResourceBasedPermissions”,“效应”“允许”,“行动”“ec2: CancelSpotInstanceRequests”,“ec2: DescribeAvailabilityZones”,“ec2: DescribeIamInstanceProfileAssociations”,“ec2: DescribeInstanceStatus”,“ec2: DescribeInstances”,“ec2: DescribeInternetGateways”,“ec2: DescribeNatGateways”,“ec2: DescribeNetworkAcls”,“ec2: DescribePrefixLists”,“ec2: DescribeReservedInstancesOfferings”,“ec2: DescribeRouteTables”,“ec2: DescribeSecurityGroups”,“ec2: DescribeSpotInstanceRequests”,“ec2: DescribeSpotPriceHistory”,“ec2: DescribeSubnets”,“ec2: DescribeVolumes”,“ec2: DescribeVpcAttribute”,“ec2: DescribeVpcs”,“ec2: CreateTags”,“ec2: DeleteTags”,“ec2: RequestSpotInstances”),“资源”“*”},“席德”“InstancePoolsSupport”,“效应”“允许”,“行动”“ec2: AssociateIamInstanceProfile”,“ec2: DisassociateIamInstanceProfile”,“ec2: ReplaceIamInstanceProfileAssociation”),“资源”“攻击:aws: ec2:地区:ACCOUNTID:实例/ *”,“条件”“StringEquals”“ec2: ResourceTag /供应商”“砖”}}},“席德”“AllowEc2RunInstancePerTag”,“效应”“允许”,“行动”“ec2: RunInstances”,“资源”“攻击:aws: ec2:地区:ACCOUNTID:体积/ *”,“攻击:aws: ec2:地区:ACCOUNTID:实例/ *”),“条件”“StringEquals”“aws: RequestTag /供应商”“砖”}}},“席德”“AllowEc2RunInstanceImagePerTag”,“效应”“允许”,“行动”“ec2: RunInstances”,“资源”“攻击:aws: ec2:地区:ACCOUNTID:形象/ *”),“条件”“StringEquals”“aws: ResourceTag /供应商”“砖”}}},“席德”“AllowEc2RunInstancePerVPCid”,“效应”“允许”,“行动”“ec2: RunInstances”,“资源”“攻击:aws: ec2:地区:ACCOUNTID:网络接口/ *”,“攻击:aws: ec2:地区:ACCOUNTID:子网/ *”,“攻击:aws: ec2:地区:ACCOUNTID:安全组/ *”),“条件”“StringEquals”“ec2: vpc”“攻击:aws: ec2:地区:ACCOUNTID: vpc / VPCID”}}},“席德”“AllowEc2RunInstanceOtherResources”,“效应”“允许”,“行动”“ec2: RunInstances”,“NotResource”“攻击:aws: ec2:地区:ACCOUNTID:形象/ *”,“攻击:aws: ec2:地区:ACCOUNTID:网络接口/ *”,“攻击:aws: ec2:地区:ACCOUNTID:子网/ *”,“攻击:aws: ec2:地区:ACCOUNTID:安全组/ *”,“攻击:aws: ec2:地区:ACCOUNTID:体积/ *”,“攻击:aws: ec2:地区:ACCOUNTID:实例/ *”},“席德”“EC2TerminateInstancesTag”,“效应”“允许”,“行动”“ec2: TerminateInstances”),“资源”“攻击:aws: ec2:地区:ACCOUNTID:实例/ *”),“条件”“StringEquals”“ec2: ResourceTag /供应商”“砖”}}},“席德”“EC2AttachDetachVolumeTag”,“效应”“允许”,“行动”“ec2: AttachVolume”,“ec2: DetachVolume”),“资源”“攻击:aws: ec2:地区:ACCOUNTID:实例/ *”,“攻击:aws: ec2:地区:ACCOUNTID:体积/ *”),“条件”“StringEquals”“ec2: ResourceTag /供应商”“砖”}}},“席德”“EC2CreateVolumeByTag”,“效应”“允许”,“行动”“ec2: CreateVolume”),“资源”“攻击:aws: ec2:地区:ACCOUNTID:体积/ *”),“条件”“StringEquals”“aws: RequestTag /供应商”“砖”}}},“席德”“EC2DeleteVolumeByTag”,“效应”“允许”,“行动”“ec2: DeleteVolume”),“资源”“攻击:aws: ec2:地区:ACCOUNTID:体积/ *”),“条件”“StringEquals”“ec2: ResourceTag /供应商”“砖”}}},“效应”“允许”,“行动”“我:CreateServiceLinkedRole”,“我:PutRolePolicy”),“资源”“攻击:aws:我::*:角色/ aws-service-role / spot.amazonaws.com/AWSServiceRoleForEC2Spot”,“条件”“StringLike”“我:AWSServiceName”“spot.amazonaws.com”}}},“席德”“VpcNonresourceSpecificActions”,“效应”“允许”,“行动”“ec2: AuthorizeSecurityGroupEgress”,“ec2: AuthorizeSecurityGroupIngress”,“ec2: RevokeSecurityGroupEgress”,“ec2: RevokeSecurityGroupIngress”),“资源”“攻击:aws: ec2:地区:ACCOUNTID:安全组/ SECURITYGROUPID”,“条件”“StringEquals”“ec2: vpc”“攻击:aws: ec2:地区:ACCOUNTID: vpc / VPCID”}}}}
    4. 点击审查政策

    5. 的名字字段,输入策略名称。

    6. 点击创建政策

    7. 如果你使用业务控制策略以拒绝AWS帐户级别的某些操作,确保sts: AssumeRole是allowlist,因此Databricks可以承担跨帐户角色。

  5. 在角色摘要中,复制的角色是

    的角色是