Controle de acesso com uma conta de serviço de namespace

Esta página descreve como configurar uma conta de serviço do Identity and Access Management (IAM) para um namespace em uma instância do Cloud Data Fusion.

Sobre namespaces no Cloud Data Fusion

Um namespace é um agrupamento lógico de aplicativos, dados e metadados associados em uma instância do Cloud Data Fusion. É possível pensar nos namespaces como uma partição da instância. Qualquer aplicativo ou dado, aqui chamado de entidade, pode existir de forma independente em vários namespaces. Em uma única instância, um namespace armazena os dados e metadados de uma entidade de forma independente de outro namespace.

Controle de acesso com uma conta de serviço de namespace

Para controlar o acesso aos Google Cloud recursos, os namespaces no Cloud Data Fusion usam o agente de serviço da API Cloud Data Fusion por padrão.

Para melhorar o isolamento de dados, é possível associar uma conta de serviço do IAM personalizada (conhecida como conta de serviço por namespace) a cada namespace. A conta de serviço do IAM personalizada, que pode ser diferente para namespaces diferentes, permite controlar o acesso a Google Cloud recursos entre namespaces para operações de design de pipeline no Cloud Data Fusion, como visualização, Wrangler e validação de pipeline.

Antes de começar

  • As contas de serviço por namespace são compatíveis com instâncias ativadas para RBAC nas versões 6.10.0 e mais recentes do Cloud Data Fusion.
  • As contas de serviço por namespace são usadas para controlar e gerenciar o acesso aos Google Cloud recursos.

Papéis e permissões necessárias

Para receber as permissões necessárias para personalizar contas de serviço de namespace e conceder permissões de usuário em um namespace, peça ao administrador para conceder a você opapel do IAM de administrador do Cloud Data Fusion (roles/datafusion.admin) na instância do Cloud Data Fusion no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Gerenciar permissões para usuários em um namespace

Para conceder aos usuários as permissões necessárias em um namespace, conceda a eles papéis predefinidos do Cloud Data Fusion. Para mais informações, consulte os papéis predefinidos do Cloud Data Fusion disponíveis para usuários em instâncias ativadas para RBAC.

Configurar uma conta de serviço de namespace

Console

Para configurar uma conta de serviço para o namespace, siga estas etapas:

  1. Se você não tiver uma conta de serviço para o namespace, crie uma.
  2. No Google Cloud console, acesse a página Instâncias do Cloud Data Fusion e abra uma instância na interface da Web do Cloud Data Fusion.

    Acesse "Instâncias"

  3. Clique em Administrador do sistema > Configuração > Namespaces.

  4. Clique no namespace que você quer configurar.

  5. Clique na guia Contas de serviço e em Adicionar conta de serviço.

    Botão "Adicionar conta de serviço".

  6. Conceda o papel de Usuário de Identidade da carga de trabalho (roles/iam.workloadIdentityUser).

    Para conceder o papel, siga estas etapas:

    1. No campo Conta de serviço de design de pipeline , insira o e-mail da conta de serviço, por exemplo, SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
    2. Siga as instruções na caixa de diálogo exibida.
  7. Para concluir a configuração da conta de serviço, volte ao namespace da instância do Cloud Data Fusion e clique em Salvar.

  8. Repita as etapas para configurar uma conta de serviço para cada namespace.

API REST

  1. Conceda o papel de Usuário de Identidade da carga de trabalho (roles/iam.workloadIdentityUser).

    Para conceder o papel, siga estas etapas:

    1. Configure as variáveis de ambiente a seguir:

      export TENANT_PROJECT_ID=TENANT_PROJECT
      export GSA_PROJECT_ID=SERVICE_ACCOUNT_PROJECT
      

      Substitua:

      • TENANT_PROJECT: o ID do projeto de locatário. Para encontrá-lo, acesse a página Instâncias e clique no nome da instância. O ID aparece na página Detalhes da instância.

        Acesse "Instâncias"

      • SERVICE_ACCOUNT_PROJECT: o Google Cloud ID do projeto em que a conta de serviço do IAM está localizada.

    2. Conceda o papel de Usuário de Identidade da carga de trabalho:

      gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser
          --member "serviceAccount:${TENANT_PROJECT_ID}.svc.id.goog[default/NAMESPACE_IDENTITY]" SERVICE_ACCOUNT_EMAIL \
          --project ${GSA_PROJECT_ID}
      

      Substitua:

      • NAMESPACE_IDENTITY: a identidade do namespace. Para mais informações, consulte Detalhes de um namespace.

      • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço, por exemplo, SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

  2. Valide o e-mail da conta de serviço do namespace da etapa anterior. Defina o environment variables e execute o comando:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity/validate -X POST -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    Substitua:

    • NAMESPACE_NAME: o ID do namespace.
    • SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço do IAM que você quer definir no namespace.
  3. Defina a conta de serviço do namespace. Defina as environment variables e execute o seguinte comando:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

Editar uma conta de serviço de namespace

Console

Para editar uma conta de serviço de namespace, siga estas etapas:

  1. Na instância do Cloud Data Fusion, clique em Administrador do sistema > Configuração > Namespaces.
  2. Clique no namespace que tem a conta de serviço que você quer editar.
  3. Para editar a conta de serviço, acesse a guia Contas de serviço. Ao lado do nome da conta de serviço, clique em Menu > Editar.
  4. Siga as etapas para configurar uma conta de serviço de namespace.

API REST

Para editar uma conta de serviço de namespace, siga estas etapas:

  1. Defina as environment variables, e execute o comando:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    Substitua:

    • NAMESPACE_NAME: o ID do namespace.
    • SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço do IAM que você quer definir no namespace.

Excluir uma conta de serviço de namespace

Console

Para excluir uma conta de serviço de namespace, siga estas etapas:

  1. Na instância do Cloud Data Fusion, clique em Administrador do sistema > Configuração > Namespaces.
  2. Clique no namespace que tem a conta de serviço que você quer excluir.
  3. Para remover a conta de serviço, acesse a guia Contas de serviço. Ao lado do nome da conta de serviço, clique em Menu > Excluir.

API REST

Para excluir uma conta de serviço de namespace, siga estas etapas:

  1. Defina as environment variables, e execute o comando:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X DELETE
    

    Substitua:

    • NAMESPACE_NAME: o ID do namespace.

Receber a conta de serviço de namespace

Console

Para receber informações da conta de serviço do namespace, siga estas etapas:

  1. No Google Cloud console, acesse a página Instâncias do Cloud Data Fusion e abra uma instância na interface da Web do Cloud Data Fusion.

    Acesse "Instâncias"

  2. Clique em Administrador do sistema > Configuração > Namespaces.

  3. Clique no nome de um namespace para conferir os detalhes da conta de serviço.

API REST

Para receber o nome da conta de serviço de namespace, siga estas etapas:

  1. Defina as environment variables, e execute o comando:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X GET
    

    Substitua:

    • NAMESPACE_NAME: o ID do namespace.

    Se for bem-sucedido, você vai receber o e-mail da conta de serviço na seguinte resposta:

    Response: {"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}
    

A seguir