Tutorial: Configurar o acesso ao S3 com um instance profile

Observação

Este artigo descreve os padrões herdados para configurar o acesso a <S3>. A Databricks recomenda o uso do Unity Catalog. Consulte Conectar-se ao armazenamento de objetos cloud usando o Unity Catalog.

Este tutorial orienta você sobre 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 instance profile para conceder permissões apenas de leitura e lista no S3.

Os administradores configuram IAM role na AWS, vinculam-nos a um workspace do Databricks e concedem acesso a usuários privilegiados para associar instance profile à compute. Todos os usuários que possuem acesso ao recurso compute com um instance profile anexado a ele ganham 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 S3.

o passo 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ço AWS.

    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 um nome de função.

    6. Clique em Criar função.

  4. Na lista de funções, clique na função.

  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 em linha.

    2. Clique na JSON tab.

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

      {
        "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 um nome de política.

    6. Clique em Criar política.

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

    ARN instance profile

Observação

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

o passo 2: Habilite a política para funcionar com recurso serverless

Esse passo garante que o site instance profile também funcione para configurar o SQL warehouse com o perfil de instância. Consulte Habilitar configuração de acesso a dados.

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

  2. Selecione a Relacionamentos de confiança . tab

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

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

     {
     "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 instrução são os IDs workspace . Substitua os YOUR_WORKSPACE-IDs por um ou mais IDs de espaço de trabalho do Databricks para os espaços de trabalho que usarão essa função.

    Observação

    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.

  6. Clique em Salvar alterações.

o passo 3: Crie a política de bucket

No mínimo, a política do 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 o default recomendado para clusters que leem e gravam dados.

Observação

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. Vá para o seu console S3. Na lista 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. Um exemplo de política IAM de bucket entreaccount poderia ser o seguinte, substituindo <aws-account-id-databricks> pelo ID account da AWS onde o ambiente do Databricks está implantado, <iam-role-for-s3-access> pela função instance profile e <s3-bucket-name> pelo nome do bucket.

    {
      "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.

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

Se você não souber qual função do IAM criou a implementação do 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.

o passo 5: Adicionar a IAM role à política 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 bloco a seguir ao final da matriz Statement . Certifique-se de não substituir nenhuma política existente. Substitua <iam-role-for-s3-access> pela função que você criou no tutorial: Configurar o acesso S3 com um instance profile:

        {
          "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 do workspace, acesse a página de configurações.

  2. Clique na Segurança tab.

  3. Clique em gerenciar próximo ao instance profile.

  4. Clique em Adicionar instance profile.

  5. Cole o ARN instance profile no campo ARNinstance profile . Se você não possui o ARN, consulte tutorial: Configurar o acesso ao S3 com um instance profile.

  6. Para que o SQL sem servidor funcione com o seu instance profile, talvez seja necessário especificar explicitamente a função ARN associada ao seu instance profile no campo IAM role ARN.

    Esta é uma passo necessária apenas se o nome da função associada do 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 do instance profile ) não corresponderem. Para confirmar se isso se aplica a você:

    1. No console AWS, acesse a tabFunções do serviço IAM. Ele lista a IAM role na 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, encontre os campos Role ARN e ARNsinstance profile e veja se eles correspondem.

      O nome do perfil da instância e o nome da função arn correspondem
    4. Se não corresponderem, cole o ARN da função no campo ARNIAM role . Se os nomes corresponderem, não será necessário definir o campo ARN daIAM role .

    5. Somente se você estiver configurando a passagem de credenciais do IAM, selecione a propriedade instance profileMeta .

  7. O Databricks valida que o ARN do instance profile está sintaticamente e semanticamente correto. Para validar a correção semântica, o Databricks faz uma execução seca iniciando clusters com este instance profile. Qualquer falha nesta execução seca produz um erro de validação na IU. A validação do instance profile poderá falhar se o instance profile contiver a política tag-enforcement, impedindo que você adicione um instance profile legítimo . Se a validação falhar e você ainda quiser adicionar o instance profile, marque a caixa de seleção Ignorar validação .

  8. Clique em Adicionar.

Gerenciar instance profiles

Os administradores do workspace podem gerenciar o acesso ao instance profile e atualizá-los. Consulte gerenciar instance profile no Databricks.