创建跨帐号IAM角色
了解如何设置跨帐户IAM角色,使Databricks能够在您的AWS帐户中部署工作区。
创建跨帐号角色
带上你的数据库外部ID(帐户ID)。当您在AWS帐户中创建AWS跨帐户IAM角色时,您需要它。
去账户控制台点击右上角用户名旁边的向下箭头。下帐户ID,选择并复制ID。
您还可以找到这个ID(标记为外部ID)去云资源>证书配置>增加证书配置.
以具有管理员权限的用户登录AWS控制台,然后转到我控制台。
单击角色选项卡。
点击创建角色.
在选择受信任实体类型,按AWS帐户瓷砖。
选择另一个AWS帐户复选框。
在“帐户ID”字段中输入Databricks帐户ID
414351767826
.这是不从Databricks帐户控制台复制的帐户ID。
选择需要外部ID复选框。
在外部ID字段,输入您从Databricks帐户控制台复制的Databricks帐户ID。
单击下一步:添加权限按钮。
单击接下来:命名、检查和创建按钮。
在角色名字段,输入角色名。
下步骤1:选择可信实体JSON应该如下所示:
{“版本”:“2012-10-17”,“声明”:[{“效应”:“允许”,“行动”:“sts: AssumeRole”,“校长”:{“AWS”:“414351767826”},“条件”:{“StringEquals”:{“sts: ExternalId”:“YOUR_EXTERNAL_ID”}}}]}
点击创建角色.将显示角色列表。
创建访问策略
要创建新的工作空间,必须在跨帐户IAM角色上设置访问策略。此策略根据您的Amazon VPC(虚拟私有云)部署类型和您的限制而有所不同。有三种政策选择:
默认的:在Databricks在您的AWS帐户中创建和配置的单个VPC中创建您的工作空间。这是默认配置。若要使用默认策略,请参见默认部署策略.
由客户管理的VPC,默认限制:在您自己的VPC中创建您的Databricks工作空间customer-managed VPC.要使用此策略,请参见由客户管理的VPC,默认策略限制.
由客户管理的VPC,自定义限制:在您自己的VPC中创建您的Databricks工作空间customer-managed VPC.用户可以自定义帐号ID、VPC ID、AWS区域和安全组限制。要使用此策略,请参见由客户管理的VPC,自定义策略限制.
重要的
这些策略假设工作空间使用安全集群连接,有时称为无公共IP (NPIP)。自2020年9月1日起,对于使用Account API创建的工作空间,安全集群连接是默认的。如果您的工作空间没有使用安全集群连接(NPIP),请与Databricks代表联系。
默认部署策略
下面的步骤包括在Databricks在您的AWS帐户中创建和配置的VPC中启动Databricks工作空间的访问策略。有关Databricks如何使用每种权限的信息,请参见数据库管理VPC的IAM权限.
在角色列表中,单击已创建的角色。
添加内联策略。
在权限选项卡上,单击添加内联策略.
在策略编辑器中,单击JSON选项卡。
将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”}}}]}
点击审查政策.
在的名字字段,输入策略名称。
点击创建政策.
如果你使用业务控制策略以拒绝AWS帐户级别的某些操作,确保
sts: AssumeRole
是allowlist,因此Databricks可以承担跨帐户角色。
在角色摘要中,复制的角色是.
由客户管理的VPC,默认策略限制
下面的步骤包括在客户管理的VPC中启动Databricks工作空间的访问策略(默认策略限制)。有关Databricks如何使用每种权限的信息,请参见客户管理VPC的IAM权限.
以具有管理员权限的用户登录AWS控制台,然后转到我控制台。
单击角色选项卡。
在角色列表中,单击跨帐号IAM角色你为Databricks创建的。
添加内联策略。
在权限选项卡上,单击添加内联策略.
在策略编辑器中,单击JSON选项卡。
复制下面用于部署工作区的访问策略由客户管理的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”}}}]}
点击审查政策.
在的名字字段,输入策略名称。
点击创建政策.
如果你使用业务控制策略以拒绝AWS帐户级别的某些操作,确保
sts: AssumeRole
是allowlist,因此Databricks可以承担跨帐户角色。
在角色摘要中,复制的角色是.
由客户管理的VPC,自定义策略限制
下面的步骤包括在客户管理的VPC中启动Databricks工作空间的访问策略(有自定义策略限制)。有关Databricks如何使用每种权限的信息,请参见客户管理VPC的IAM权限.
请注意
是Databricks生产AWS帐户,从中获取Amazon Machine Images (AMI)601306020600
.您可以使用此帐户Id创建自定义访问策略,以限制可以在AWS帐户中使用哪些ami。请联系您的Databricks代表以获取更多信息。
以具有管理员权限的用户登录AWS控制台,然后转到我控制台。
单击角色选项卡。
在角色列表中,单击跨帐号IAM角色你为Databricks创建的。
添加内联策略。
在权限选项卡上,单击添加内联策略.
在策略编辑器中,单击JSON选项卡。
复制下面用于部署工作区的访问策略用户管理的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”}}}]}
点击审查政策.
在的名字字段,输入策略名称。
点击创建政策.
如果你使用业务控制策略以拒绝AWS帐户级别的某些操作,确保
sts: AssumeRole
是allowlist,因此Databricks可以承担跨帐户角色。
在角色摘要中,复制的角色是.