創建跨帳戶IAM角色

了解如何設置一個跨帳戶的IAM角色,使Databricks可以在您的AWS帳戶中部署工作空間。

提示

您可以使用以下命令自動創建IAM角色磚起程拓殖的提供者.看到使用terrform創建Databricks工作空間

創建跨帳戶角色

  1. 讓你的磚外部ID(帳戶ID)。當你在你的AWS帳戶中創建AWS跨帳戶IAM角色時,你需要它。

    賬戶控製台然後點擊右上角用戶名旁邊的向下箭頭。下帳戶ID,選擇並複製ID。

    您還可以找到這個ID(標記為外部ID)前往雲資源>證書配置>添加證書配置

  2. 作為具有管理員權限的用戶登錄到AWS控製台,然後轉到控製台。

  3. 單擊角色選項卡。

  4. 點擊創建角色

    1. 選擇受信任實體類型,單擊AWS帳戶瓷磚。

    2. 選擇另一個AWS帳戶複選框。

    3. 在Account 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如何使用每種權限的信息,請參見受databrick管理的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是允許的,因此Databricks可以承擔跨帳戶的角色。

  3. 在角色摘要中,複製的角色是

    的角色是

由客戶管理的VPC,默認策略限製

以下步驟包括在客戶管理VPC中啟動Databricks工作空間的訪問策略,策略限製為默認策略。有關Databricks如何使用每種權限的信息,請參見客戶管理VPC的IAM權限

  1. 作為具有管理員權限的用戶登錄到AWS控製台,然後轉到控製台。

  2. 單擊角色選項卡。

  3. 在角色列表中,單擊cross-account我角色你為數據庫創建的。

  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是允許的,因此Databricks可以承擔跨帳戶的角色。

  5. 在角色摘要中,複製的角色是

    的角色是

客戶管理的VPC,自定義策略限製

以下步驟包括在客戶管理的VPC中使用自定義策略限製啟動Databricks工作空間的訪問策略。有關Databricks如何使用每種權限的信息,請參見客戶管理VPC的IAM權限

請注意

Databricks生產AWS帳戶,亞馬遜機器圖像(AMI)的來源是601306020600.您可以使用此帳戶Id創建自定義訪問策略,以限製可以在AWS帳戶中使用哪些ami。請聯係您的Databricks代表了解更多信息。

  1. 作為具有管理員權限的用戶登錄到AWS控製台,然後轉到控製台。

  2. 單擊角色選項卡。

  3. 在角色列表中,單擊cross-account我角色你為數據庫創建的。

  4. 添加內聯策略。

    1. 權限選項卡上,單擊添加內嵌策略

      內聯政策
    2. 在策略編輯器中,單擊JSON選項卡。

      JSON編輯器
    3. 複製下麵用於部署工作空間的訪問策略客戶管理的VPC,自定義帳號ID、VPC ID、地區、安全組限製。

      將策略中的以下值替換為您自己的配置值:

      • ACCOUNTID-您的AWS帳戶ID,這是一個數字。

      • VPCID—需要啟動工作空間的AWS VPC ID。

      • 地區—“AWS”,例如部署VPC時使用的“Region名稱”us-west-2

      • SECURITYGROUPID—AWS安全組ID。當您添加安全組限製時,您不能重用跨帳戶IAM角色或引用憑證ID (credentials_id)及其他工作空間。對於那些其他工作區,您必須創建獨立的角色、策略和憑證對象。

      請注意

      如果使用不可變安全組,請從策略中移除這些權限:ec2: AuthorizeSecurityGroupEgressec2: AuthorizeSecurityGroupIngressec2: RevokeSecurityGroupEgressec2: RevokeSecurityGroupIngress.修改策略以刪除最終的JSON對象Sid價值VpcNonresourceSpecificActions

      “版本”“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是允許的,因此Databricks可以承擔跨帳戶的角色。

  5. 在角色摘要中,複製的角色是

    的角色是