Pular para o conteúdo principal

Crie um IAM role para a implantação do workspace

Este artigo descreve como:

  • Crie e configure uma IAM role entre account para implementação workspace do Databricks. Essa função dá ao Databricks acesso limitado à sua account da AWS para fins de criação e gerenciamento de recursos de computação e VPC.
  • Use o Databricks account console para criar uma configuração de credenciais que faça referência IAM role ao.

Requisitos

Automatizar a criação do site IAM role

Você pode automatizar a criação do IAM role usando uma das seguintes opções de automação:

Manual IAM role creation

As passos a seguir se aplicam a uma implementação personalizada e workspace da AWS. Você só precisa seguir estes passos se estiver implementando um workspace usando a opção de configuração Custom AWS.

Etapa 1: Criar um cruzamento -account IAM role

  1. Obtenha sua ID Databricks account . Consulte Localizar sua account ID.
  2. Faça login no console do AWS como um usuário com privilégios de administrador e acesse o console do IAM .
  3. Clique na guia Funções na barra lateral.
  4. Clique em Criar função .
    1. Em Selecionar tipo de entidade confiável , clique no bloco da conta da AWS .
    2. Marque a caixa de seleção Outra conta AWS .
    3. No campo account ID (ID da conta), digite Databricks account ID 414351767826. Esse não é o ID da conta que o senhor copiou do console Databricks account . Se o senhor estiver usando Databricks on AWS GovCloud use o Databricks account ID 044793339203 para AWS GovCloud ou 170661010020 para AWS GovCloud DoD.
    4. Marque a caixa de seleção Exigir ID externa .
    5. No campo ID externo , digite o ID da sua conta Databricks, que foi copiado do console da conta Databricks.
    6. Clique no botão Avançar .
    7. Na página Adicionar permissões , clique no botão Avançar . Agora você deve estar na página Nome, revisar e criar .
    8. No campo Nome da função , insira um nome de papel.
    9. Clique em Criar papel . A lista de funções é exibida.

Etapa 2: criar uma política de acesso

A política de acesso que o senhor adiciona à função depende do tipo de implantação do Amazon VPC (Virtual Private Cloud). Para obter informações sobre como Databricks usa cada permissão,IAM consulte permissions for Databricks-gerenciar VPCs. Use as instruções de política que descrevem sua implantação:

Opção 1: política de implementação padrão

  1. Na seção Funções do console do IAM , clique no IAM role que você criou na Etapa 1.

  2. Clique no menu suspenso Adicionar permissões e selecione Criar política em linha .

  3. No editor de políticas, clique na guia JSON .

  4. Copie e cole a seguinte política de acesso:

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "Stmt1403287045000",
    "Effect": "Allow",
    "Action": [
    "ec2:AllocateAddress",
    "ec2:AssignPrivateIpAddresses",
    "ec2:AssociateDhcpOptions",
    "ec2:AssociateIamInstanceProfile",
    "ec2:AssociateRouteTable",
    "ec2:AttachInternetGateway",
    "ec2:AttachVolume",
    "ec2:AuthorizeSecurityGroupEgress",
    "ec2:AuthorizeSecurityGroupIngress",
    "ec2:CancelSpotInstanceRequests",
    "ec2:CreateDhcpOptions",
    "ec2:CreateFleet",
    "ec2:CreateInternetGateway",
    "ec2:CreateLaunchTemplate",
    "ec2:CreateLaunchTemplateVersion",
    "ec2:CreateNatGateway",
    "ec2:CreateRoute",
    "ec2:CreateRouteTable",
    "ec2:CreateSecurityGroup",
    "ec2:CreateSubnet",
    "ec2:CreateTags",
    "ec2:CreateVolume",
    "ec2:CreateVpc",
    "ec2:CreateVpcEndpoint",
    "ec2:DeleteDhcpOptions",
    "ec2:DeleteFleets",
    "ec2:DeleteInternetGateway",
    "ec2:DeleteLaunchTemplate",
    "ec2:DeleteLaunchTemplateVersions",
    "ec2:DeleteNatGateway",
    "ec2:DeleteRoute",
    "ec2:DeleteRouteTable",
    "ec2:DeleteSecurityGroup",
    "ec2:DeleteSubnet",
    "ec2:DeleteTags",
    "ec2:DeleteVolume",
    "ec2:DeleteVpc",
    "ec2:DeleteVpcEndpoints",
    "ec2:DescribeAvailabilityZones",
    "ec2:DescribeFleetHistory",
    "ec2:DescribeFleetInstances",
    "ec2:DescribeFleets",
    "ec2:DescribeIamInstanceProfileAssociations",
    "ec2:DescribeInstanceStatus",
    "ec2:DescribeInstances",
    "ec2:DescribeInternetGateways",
    "ec2:DescribeLaunchTemplates",
    "ec2:DescribeLaunchTemplateVersions",
    "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:GetLaunchTemplateData",
    "ec2:GetSpotPlacementScores",
    "ec2:ModifyFleet",
    "ec2:ModifyLaunchTemplate",
    "ec2:ModifyVpcAttribute",
    "ec2:ReleaseAddress",
    "ec2:ReplaceIamInstanceProfileAssociation",
    "ec2:RequestSpotInstances",
    "ec2:RevokeSecurityGroupEgress",
    "ec2:RevokeSecurityGroupIngress",
    "ec2:RunInstances",
    "ec2:TerminateInstances"
    ],
    "Resource": ["*"]
    },
    {
    "Effect": "Allow",
    "Action": ["iam:CreateServiceLinkedRole", "iam:PutRolePolicy"],
    "Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot",
    "Condition": {
    "StringLike": {
    "iam:AWSServiceName": "spot.amazonaws.com"
    }
    }
    }
    ]
    }
  5. Clique em Revisar política .

  6. No campo Nome , insira um nome de política.

  7. Clique em Criar política .

  8. (Opcional) Se o senhor usar Políticas de controle de serviço para negar determinadas ações no nível AWS account , certifique-se de que sts:AssumeRole esteja na lista de permissões para que o Databricks possa assumir a função cruzadaaccount.

  9. No resumo da função, copie o ARN da função a ser adicionada ao Databricks.

Opção 2: Gerenciar o cliente VPC com a política de restrições do default

  1. Faça login no console do AWS como um usuário com privilégios de administrador e acesse o console do IAM .

  2. Clique na guia Funções na barra lateral.

  3. Na lista de funções, clique no IAM role entre contas que você criou na etapa 1.

  4. Clique no menu suspenso Adicionar permissões e selecione Criar política em linha .

  5. No editor de políticas, clique na guia JSON .

  6. Copie e cole a seguinte política de acesso.

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "Stmt1403287045000",
    "Effect": "Allow",
    "Action": [
    "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",
    "ec2:DescribeFleetHistory",
    "ec2:ModifyFleet",
    "ec2:DeleteFleets",
    "ec2:DescribeFleetInstances",
    "ec2:DescribeFleets",
    "ec2:CreateFleet",
    "ec2:DeleteLaunchTemplate",
    "ec2:GetLaunchTemplateData",
    "ec2:CreateLaunchTemplate",
    "ec2:DescribeLaunchTemplates",
    "ec2:DescribeLaunchTemplateVersions",
    "ec2:ModifyLaunchTemplate",
    "ec2:DeleteLaunchTemplateVersions",
    "ec2:CreateLaunchTemplateVersion",
    "ec2:AssignPrivateIpAddresses",
    "ec2:GetSpotPlacementScores"
    ],
    "Resource": ["*"]
    },
    {
    "Effect": "Allow",
    "Action": ["iam:CreateServiceLinkedRole", "iam:PutRolePolicy"],
    "Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot",
    "Condition": {
    "StringLike": {
    "iam:AWSServiceName": "spot.amazonaws.com"
    }
    }
    }
    ]
    }
  7. Clique em Revisar política .

  8. No campo Nome , insira um nome de política.

  9. Clique em Criar política .

  10. (Opcional) Se o senhor usar Políticas de controle de serviço para negar determinadas ações no nível AWS account , certifique-se de que sts:AssumeRole esteja na lista de permissões para que o Databricks possa assumir a função cruzadaaccount.

  11. No resumo da função, copie a ARN da função .

Opção 3: Gerenciar o cliente VPC com restrições de políticas personalizadas

nota

A produção Databricks AWS account da qual Amazon Machine Images (AMI) são originadas é 601306020600. O senhor pode usar esse ID account para criar políticas de acesso personalizadas que restringem quais AMIs podem ser usadas em seu AWS account. Para obter mais informações, entre em contato com a equipe Databricks account .

  1. Faça login no console do AWS como um usuário com privilégios de administrador e acesse o console do IAM .

  2. Clique na guia Funções na barra lateral.

  3. Na lista de funções, clique no IAM role entre contas que você criou na etapa 1.

  4. Clique no menu suspenso Adicionar permissões e, em seguida, em Criar política embutida .

  5. No editor de políticas, clique na guia JSON .

  6. Copie e cole a seguinte política de acesso.

    Substitua os valores a seguir na política pelos seus próprios valores de configuração:

    • ACCOUNTID — O ID da sua conta da AWS, que é um número.

    • VPCID — ID do AWS VPC onde você deseja iniciar workspaces.

    • REGION — Nome da região AWS para sua implementação VPC, por exemplo us-west-2.

    • SECURITYGROUPID - ID do seu grupo de segurança do AWS. Quando você adiciona uma restrição de grupo de segurança, não é possível reutilizar o IAM role entre contas nem fazer referência a um ID de credenciais (credentials_id) para outros workspaces. Para esses outros workspaces, você deve criar funções, políticas e objetos de credenciais separados.

nota

Se o senhor tiver requisitos personalizados configurados para grupos de segurança com o seu vpc gerenciador de clientes, entre em contato com a equipe Databricks account para obter assistência com as personalizações da política IAM.

JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NonResourceBasedPermissions",
"Effect": "Allow",
"Action": [
"ec2:AssignPrivateIpAddresses",
"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:GetSpotPlacementScores",
"ec2:RequestSpotInstances",
"ec2:DescribeFleetHistory",
"ec2:ModifyFleet",
"ec2:DeleteFleets",
"ec2:DescribeFleetInstances",
"ec2:DescribeFleets",
"ec2:CreateFleet",
"ec2:DeleteLaunchTemplate",
"ec2:GetLaunchTemplateData",
"ec2:CreateLaunchTemplate",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:ModifyLaunchTemplate",
"ec2:DeleteLaunchTemplateVersions",
"ec2:CreateLaunchTemplateVersion"
],
"Resource": ["*"]
},
{
"Sid": "InstancePoolsSupport",
"Effect": "Allow",
"Action": [
"ec2:AssociateIamInstanceProfile",
"ec2:DisassociateIamInstanceProfile",
"ec2:ReplaceIamInstanceProfileAssociation"
],
"Resource": "arn:aws:ec2:REGION:ACCOUNTID:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "AllowEc2RunInstancePerTag",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:volume/*", "arn:aws:ec2:REGION:ACCOUNTID:instance/*"],
"Condition": {
"StringEquals": {
"aws:RequestTag/Vendor": "Databricks"
}
}
},
{
"Sid": "AllowEc2RunInstanceImagePerTag",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:image/*"],
"Condition": {
"StringEquals": {
"aws:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "AllowEc2RunInstancePerVPCid",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:REGION:ACCOUNTID:network-interface/*",
"arn:aws:ec2:REGION:ACCOUNTID:subnet/*",
"arn:aws:ec2:REGION:ACCOUNTID:security-group/*"
],
"Condition": {
"StringEquals": {
"ec2:vpc": "arn:aws:ec2:REGION:ACCOUNTID:vpc/VPCID"
}
}
},
{
"Sid": "AllowEc2RunInstanceOtherResources",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"NotResource": [
"arn:aws:ec2:REGION:ACCOUNTID:image/*",
"arn:aws:ec2:REGION:ACCOUNTID:network-interface/*",
"arn:aws:ec2:REGION:ACCOUNTID:subnet/*",
"arn:aws:ec2:REGION:ACCOUNTID:security-group/*",
"arn:aws:ec2:REGION:ACCOUNTID:volume/*",
"arn:aws:ec2:REGION:ACCOUNTID:instance/*"
]
},
{
"Sid": "EC2TerminateInstancesTag",
"Effect": "Allow",
"Action": ["ec2:TerminateInstances"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:instance/*"],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "EC2AttachDetachVolumeTag",
"Effect": "Allow",
"Action": ["ec2:AttachVolume", "ec2:DetachVolume"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:instance/*", "arn:aws:ec2:REGION:ACCOUNTID:volume/*"],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "EC2CreateVolumeByTag",
"Effect": "Allow",
"Action": ["ec2:CreateVolume"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:volume/*"],
"Condition": {
"StringEquals": {
"aws:RequestTag/Vendor": "Databricks"
}
}
},
{
"Sid": "EC2DeleteVolumeByTag",
"Effect": "Allow",
"Action": ["ec2:DeleteVolume"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:volume/*"],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Effect": "Allow",
"Action": ["iam:CreateServiceLinkedRole", "iam:PutRolePolicy"],
"Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot",
"Condition": {
"StringLike": {
"iam:AWSServiceName": "spot.amazonaws.com"
}
}
},
{
"Sid": "VpcNonresourceSpecificActions",
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress"
],
"Resource": "arn:aws:ec2:REGION:ACCOUNTID:security-group/SECURITYGROUPID",
"Condition": {
"StringEquals": {
"ec2:vpc": "arn:aws:ec2:REGION:ACCOUNTID:vpc/VPCID"
}
}
}
]
}
  1. Clique em Revisar política .

  2. No campo Nome , insira um nome de política.

  3. Clique em Criar política .

  4. (Opcional) Se o senhor usar Políticas de controle de serviço para negar determinadas ações no nível AWS account , certifique-se de que sts:AssumeRole esteja na lista de permissões para que o Databricks possa assumir a função cruzadaaccount.

  5. No resumo da função, copie a ARN da função .

Etapa 3: criar uma configuração de credenciais no Databricks

Depois de criar o IAM role, você pode informar aos Databricks sobre ela criando uma configuração de credencial que usa o ID da função.

Para criar uma configuração de credencial:

  1. No console da conta, clique em Recursos da nuvem .
  2. Clique em Configuração de credenciais .
  3. Clique em Adicionar configuração de credencial .
  4. No campo Nome da configuração da credencial , insira um nome legível para sua nova configuração de credencial.
  5. No campo ARN de função , insira o ARN da sua função.
  6. Clique em Adicionar .

A validação não é executada durante a criação da configuração da credencial. Alguns erros são detectados somente quando você utiliza a configuração para criar uma novo workspace. Esses erros podem incluir uma ARN inválida ou permissões incorretas para a função, entre outros.

Excluir uma configuração de credencial

As configurações de credenciais não podem ser editadas após a criação. Se a configuração tiver dados incorretos ou se você não precisar mais deles, exclua a configuração de credencial:

  1. No console da conta, clique em Recursos da nuvem .

  2. Clique em Configuração de credenciais .

  3. Na linha de configuração de credenciais, clique no ícone do menu Ações e selecione Excluir .

    Você também pode clicar no nome de configuração da credencial e clicar em Excluir na caixa de diálogo pop-up.

  4. Na caixa de diálogo de confirmação, clique em Confirmar exclusão .