Pular para o conteúdo principal

Tutorial: Configurar o acesso S3 com um instance profile

importante

Esta documentação foi descontinuada e pode não ser atualizada.

Este artigo descreve padrões legados para configurar o acesso ao Amazon S3. Databricks recomenda o uso de locais externos Unity Catalog para gerenciar o acesso aos dados armazenados no armazenamento de objetos cloud . Consulte Criar uma credencial de armazenamento e um local externo para o S3 usando o AWS CloudFormation.

Este tutorial mostra como criar um instance profile com permissões de leitura, gravação, atualização e exclusão em um único bucket S3 . Você pode conceder privilégios para vários buckets usando uma única IAM role e instance profile. Também é possível usar o perfil de instância para conceder apenas permissões de leitura e listagem no S3.

Os administradores configuram a função IAM na AWS, vinculam-na a um workspace Databricks e concedem acesso a usuários privilegiados para associar o perfil da instância ao compute. Todos os usuários que têm acesso ao recurso compute com um instance profile associado obtêm os privilégios concedidos pelo instance profile.

Antes de começar

Este tutorial foi desenvolvido para administradores de workspaces. Você deve ter privilégios suficientes na conta da AWS que contém seu Databricks workspace e ser um administrador do Databricks workspace.

Este tutorial pressupõe as seguintes permissões e ativos:

  • Privilégios para editar a IAM role usada para implantar o workspace Databricks.
  • Privilégios para criar novas IAM roles na AWS.
  • Privilégios para editar permissões em um bucket do S3.

Etapa 1: Crie um instance profile usando o console AWS

  1. No console da AWS, acesse o serviço IAM .

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

  3. Clique em Criar função .

    1. Em Tipo de entidade confiável , selecione ServiçoAWS .
    2. Em Caso de uso , selecione EC2 .
    3. Clique em Avançar .
    4. Na parte rodapé da página, clique em Avançar .
    5. No campo Nome da função , digite o nome da função.
    6. Clique em Criar função .
  4. Na lista de funções, clique na função desejada.

  5. Adicione uma política embutida à função. Esta política concede acesso ao bucket S3.

    1. Na tab Permissões, clique em Adicionar permissões > Criar política embutida .

    2. Clique na tab JSON .

    3. Copie esta política e defina <s3-bucket-name> como o nome do seu bucket.

      JSON
      {
      "Version": "2012-10-17",
      "Statement": [
      {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::<s3-bucket-name>"]
      },
      {
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl"],
      "Resource": ["arn:aws:s3:::<s3-bucket-name>/*"]
      }
      ]
      }
    4. Clique em Revisar política .

    5. No campo Nome , digite o nome da política.

    6. Clique em Criar política .

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

    ARN instance profile

nota

Se você pretende habilitar a criptografia para o bucket S3 , você deve adicionar a IAM role como um usuário de chave para a key KMS fornecida na configuração. Consulte Configurar a criptografia para S3 com o KMS.

o passo 2: Habilitar a política para funcionar com recursos serverless

Este passo garante que seu instance profile também funcione para configurar SQL Warehouse com perfil de instância. Consulte Configurações de acesso a dados.

  1. Na lista de funções, clique no seu instance profile.

  2. Selecione a tab Relações de Confiança" .

  3. Clique em Editar política de confiança .

  4. Dentro da matriz Statement existente, anexe o seguinte bloco JSON ao final da política de confiança existente. Certifique-se de não sobrescrever a política existente.

    JSON
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": ["arn:aws:iam::790110701330:role/serverless-customer-resource-role"]
    },
    "Action": "sts:AssumeRole",
    "Condition": {
    "StringEquals": {
    "sts:ExternalId": ["databricks-serverless-<YOUR-WORKSPACE-ID1>", "databricks-serverless-<YOUR-WORKSPACE-ID2>"]
    }
    }
    }

    A única coisa que você precisa alterar na declaração são os IDs workspace . Substitua os YOUR_WORKSPACE-IDpor um ou mais IDsworkspace Databricks para o espaço de trabalho que usará esta função.

nota

Para obter o ID do seu workspace , verifique o URL quando estiver usando seu workspace. Por exemplo, em https://<databricks-instance>/?o=6280049833385130, o número após o= é o ID workspace .

Não edite a entidade de segurança da política. O campo Principal.AWS deve continuar a ter o valor arn:aws:iam::790110701330:role/serverless-customer-resource-role. Isso faz referência a uma função de computação serverless gerenciada pelo Databricks. 5. Clique em Revisar política .

  1. Clique em Salvar alterações .

o passo 3: Criar a política de bucket

No mínimo, a política S3 deve incluir as ações ListBucket e GetObject , que fornecem acesso somente leitura a um bucket. Delta Lake usa permissões DeleteObject e PutObject durante operações regulares. As permissões no exemplo de política abaixo são as configurações padrão recomendadas para clusters que leem e gravam dados.

nota

Os buckets do S3 têm nomes universalmente exclusivos e não exigem um ID de conta para identificação universal. Se você optar por vincular um bucket do S3 a uma IAM role e ao Databricks workspace em outra conta da AWS, deverá especificar o ID da conta ao configurar sua política de bucket do S3.

  1. Acesse o seu console S3. Na lista de Buckets , selecione o bucket para o qual deseja criar uma política.

  2. Clique em Permissões .

  3. Em Política de bucket , clique em Editar .

  4. Cole uma política. Uma política IAM de bucket entreaccount exemplo poderia ser a seguinte, substituindo <aws-account-id-databricks> pelo ID account AWS onde o ambiente Databricks está implantado, <iam-role-for-s3-access> pela função instance profile e <s3-bucket-name> pelo nome do bucket.

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "Example permissions",
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::<aws-account-id-databricks>:role/<iam-role-for-s3-access>"
    },
    "Action": ["s3:GetBucketLocation", "s3:ListBucket"],
    "Resource": "arn:aws:s3:::<s3-bucket-name>"
    },
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::<aws-account-id-databricks>:role/<iam-role-for-s3-access>"
    },
    "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl"],
    "Resource": "arn:aws:s3:::<s3-bucket-name>/*"
    }
    ]
    }
  5. Clique em Salvar .

Etapa 4: Localize a IAM role que criou a implantação do Databricks

Se você não souber qual IAM role criou a implantação Databricks , faça o seguinte:

  1. Como administrador da conta, faça login no console da conta.
  2. Acesse Workspaces e clique no nome do seu workspace.
  3. Na caixa Credenciais , anote o nome da função no final do ARN da Função.

Por exemplo, na arn:aws:iam::123456789123:role/finance-prodARN da função , o nome da função é finance-prod.

Etapa 5: Adicione a IAM role S3 à política do EC2

  1. No console da AWS, acesse o serviço IAM .

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

  3. Clique na função que criou a implementação do Databricks.

  4. Na guia Permissões , clique na política.

  5. Clique em Editar política .

  6. Anexe o seguinte bloco ao final da matriz Statement . Certifique-se de não sobrescrever nenhuma das políticas existentes. Substitua <iam-role-for-s3-access> pela função que você criou no tutorial: Configurar o acesso S3 com um instance profile:

    JSON
    {
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "arn:aws:iam::<aws-account-id-databricks>:role/<iam-role-for-s3-access>"
    }
  7. Clique em Revisar política .

  8. Clique em Salvar alterações .

o passo 6: Adicionar o instance profile ao Databricks

  1. Como administrador workspace , acesse a página de configurações.

  2. Clique na tab Segurança .

  3. Clique em Gerenciar ao lado de Perfil da instância .

  4. Clique em Adicionar perfil de instância .

  5. Cole ARN do seu instance profile no campo ARNdo perfil de instância . Se você não tiver o ARN, consulte o tutorial: Configurar o acesso S3 com um instance profile.

  6. Para que SQLserverless funcione com o seu instance profile, talvez seja necessário especificar explicitamente o ARN da função associado ao seu instance profile no campo ARNIAM role .

    Este passo só é necessário se o nome da função associada ao seu instance profile (o texto após a última barra no ARN da função) e o nome instance profile (o texto após a última barra no ARN instance profile ) não coincidirem. Para confirmar se isso se aplica a você:

    1. No console AWS , acesse a tabFunções do serviçoIAM. Ele lista a função IAM em sua account.

    2. Clique na função com o nome que corresponde ao nome do instance profile das configurações administrativas do Databricks SQL na seção Segurança de dados do campo instance profile que você encontrou anteriormente nesta seção.

    3. Na área de resumo, localize os campos ARNda função e ARNsdo perfil da instância e verifique se eles correspondem.

      O nome do perfil da instância e o nome da função arn correspondem

    4. Caso não correspondam, cole o ARN da função no campo ARNIAM role . Se os nomes coincidirem, você não precisa definir o campo ARNIAM role .

    5. Selecione a propriedade de perfil IAM da instância Meta somente se estiver configurando a passagem de credenciais .

  7. Databricks valida se o ARN instance profile está correto tanto sintática quanto semanticamente. Para validar a correção semântica, Databricks realiza uma execução a seco, iniciando um cluster com este instance profile. Qualquer falha nessa execução a seco produz um erro de validação na interface do usuário. A validação do instance profile pode falhar se o instance profile contiver a política tag-enforcement , impedindo você de adicionar um instance profile legítimo. Se a validação falhar e você ainda quiser adicionar o instance profile, selecione a caixa de seleção Ignorar Validação .

  8. Clique em Adicionar .

perfil da instância

Os administradores do espaço de trabalho podem gerenciar o acesso ao perfil da instância e atualizá-lo. Veja o perfil da instância de gerenciamento no Databricks.

Próximos passos