Pular para o conteúdo principal

Tutorial: Configurar o acesso S3 com um instance profile

nota

Este artigo descreve os padrões herdados para configurar o acesso a Amazon S3. A Databricks recomenda o uso de locais externos do Unity Catalog para gerenciar o acesso aos dados armazenados no armazenamento de objetos na nuvem. Consulte Conectar-se ao serviço e armazenamento de objetos na nuvem usando Unity Catalog.

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

Os administradores configuram a função IAM em AWS, vinculam-na a um Databricks workspace e concedem acesso a usuários privilegiados para associar o perfil da instância a compute. Todos os usuários que têm acesso ao recurso compute com um instance profile anexado a ele 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 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 Trusted entity type (Tipo de entidade confiável ), selecione AWS serviço .
    2. Em Use case (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 da 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. Essa política concede acesso ao bucket S3.

    1. Em Permissions (Permissões) tab, clique em Add permissions (Adicionar permissões) > Create inline policy (Criar política em linha ).

    2. Clique no botão JSON tab.

    3. Copie essa 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 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

nota

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

Etapa 2: habilitar a política para trabalhar com serverless recurso

Essa etapa garante que o seu instance profile também funcione para configurar o armazém SQL com o perfil da instância. Consulte Configurações de acesso a dados.

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

  2. Selecione Trust Relationships (Relações 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.

    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 o senhor precisa alterar na declaração são os IDs de workspace. Substitua os YOUR_WORKSPACE-IDs por um ou mais Databricks workspace IDs do espaço de trabalho que usará essa função.

nota

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

Etapa 3: criar 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. O Delta Lake usa as permissões DeleteObject e PutObject durante as operações regulares. As permissões na política de exemplo abaixo são o padrão recomendado para o clustering que lê e grava 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 console do S3. Na lista Buckets , selecione o bucket para o qual você 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 de bucketaccount cruzado IAM poderia ser o seguinte, substituindo <aws-account-id-databricks> pela ID AWS account em que o ambiente Databricks é 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 o site 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.

Etapa 5: Adicionar o S3 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 o senhor criou no tutorial: Configure 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 .

Etapa 6: Adicione o site instance profile ao Databricks

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

  2. Clique em Security tab.

  3. Clique em gerenciar ao lado do perfil da instância .

  4. Clique em Add instance profile (Adicionar perfil de instância ).

  5. Cole seu instance profile ARN no campo do perfil da instância ARN . Se o senhor não tiver o ARN, consulte o tutorial: Configure o acesso S3 com um instance profile.

  6. Para que o senhor serverless SQL 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 campo.

    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 as funções do serviçoIAM tab . Ele lista a função IAM em seu site 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 Role ARN e instance profile ARNs 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 a função ARN no campo IAM role ARN campo. Se os nomes forem iguais, o senhor não precisará definir o campo IAM role ARN campo.

    5. Somente se o senhor estiver configurando a passagem de credenciaisIAM, selecione a propriedade Meta instance profile .

  7. Databricks valida que o site instance profile ARN está sintática e semanticamente correto. Para validar a exatidão semântica, o site Databricks faz uma execução seca, lançando um clustering com este instance profile. Qualquer falha nessa execução seca 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 o senhor de adicionar um instance profile legítimo. Se a validação falhar e o senhor ainda quiser adicionar o instance profile, marque a caixa de seleção Skip Validation (Ignorar validação ).

  8. Clique em Adicionar .

Gerenciar o perfil da instância

Os administradores do workspace podem gerenciar o acesso ao perfil da instância e atualizá-lo. Veja o perfil da instância gerenciar em Databricks.

Próximas etapas