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
- O senhor precisa ser um administrador doDatabricks account.
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:
- O AWS Quick começar (CloudFormation) para implantar seu workspace. Esse é o método de implementação recomendado pelo site workspace.
- O provedor do Databricks Terraform. Consulte Criar o espaço de trabalho Databricks usando Terraform.
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
- Etapa 2: criar uma política de acesso
- Etapa 3: criar uma configuração de credenciais para a função no Databricks
Etapa 1: Criar um cruzamento -account IAM role
- Obtenha sua ID Databricks account . Consulte Localizar sua account ID.
- Faça login no console do AWS como um usuário com privilégios de administrador e acesse o console do IAM .
- Clique na guia Funções na barra lateral.
- Clique em Criar função .
- Em Selecionar tipo de entidade confiável , clique no bloco da conta da AWS .
- Marque a caixa de seleção Outra conta AWS .
- 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 ID044793339203
para AWS GovCloud ou170661010020
para AWS GovCloud DoD. - Marque a caixa de seleção Exigir ID externa .
- No campo ID externo , digite o ID da sua conta Databricks, que foi copiado do console da conta Databricks.
- Clique no botão Avançar .
- Na página Adicionar permissões , clique no botão Avançar . Agora você deve estar na página Nome, revisar e criar .
- No campo Nome da função , insira um nome de papel.
- 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: padrão. Um único VPC que Databricks cria e configura em seu AWS account. Esta é a configuração default.
- Opção 2: Gerenciar o cliente VPC com restrições default. Crie seu espaço de trabalho Databricks em seu próprio VPC, usando um recurso conhecido como customer-gerenciar VPC.
- Opção 3: Gerenciar o cliente VPC com restrições personalizadas. Crie seu espaço de trabalho Databricks em seu próprio VPC com restrições personalizadas para account ID, VPC ID, AWS Region e grupo de segurança.
Opção 1: política de implementação padrão
-
Na seção Funções do console do IAM , clique no IAM role que você criou na Etapa 1.
-
Clique no menu suspenso Adicionar permissões e selecione Criar política em linha .
-
No editor de políticas, clique na guia JSON .
-
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"
}
}
}
]
} -
Clique em Revisar política .
-
No campo Nome , insira um nome de política.
-
Clique em Criar política .
-
(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. -
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
-
Faça login no console do AWS como um usuário com privilégios de administrador e acesse o console do IAM .
-
Clique na guia Funções na barra lateral.
-
Na lista de funções, clique no IAM role entre contas que você criou na etapa 1.
-
Clique no menu suspenso Adicionar permissões e selecione Criar política em linha .
-
No editor de políticas, clique na guia JSON .
-
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"
}
}
}
]
} -
Clique em Revisar política .
-
No campo Nome , insira um nome de política.
-
Clique em Criar política .
-
(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. -
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
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 .
-
Faça login no console do AWS como um usuário com privilégios de administrador e acesse o console do IAM .
-
Clique na guia Funções na barra lateral.
-
Na lista de funções, clique no IAM role entre contas que você criou na etapa 1.
-
Clique no menu suspenso Adicionar permissões e, em seguida, em Criar política embutida .
-
No editor de políticas, clique na guia JSON .
-
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 exemplous-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.
-
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.
{
"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"
}
}
}
]
}
-
Clique em Revisar política .
-
No campo Nome , insira um nome de política.
-
Clique em Criar política .
-
(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. -
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:
- No console da conta, clique em Recursos da nuvem .
- Clique em Configuração de credenciais .
- Clique em Adicionar configuração de credencial .
- No campo Nome da configuração da credencial , insira um nome legível para sua nova configuração de credencial.
- No campo ARN de função , insira o ARN da sua função.
- 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:
-
No console da conta, clique em Recursos da nuvem .
-
Clique em Configuração de credenciais .
-
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.
-
Na caixa de diálogo de confirmação, clique em Confirmar exclusão .