Crie um workspace de menor privilégio
Um Workspace de privilégio mínimo é um Workspace do Databricks no Google Cloud que você cria concedendo ao Databricks apenas um conjunto restrito e explicitamente definido de permissões IAM. Em vez de conceder funções amplas e deixar o Databricks provisionar e configurar automaticamente os recursos da cloud, você cria IAM roles personalizadas, configura os recursos de rede e criptografia e provisiona o Workspace por meio da API da Account.
Essa abordagem é destinada a accounts preocupadas com segurança e regulamentadas que precisam minimizar as permissões concedidas a serviços de terceiros. Como os passos é feita manualmente, criar um Workspace com privilégios mínimos exige mais esforço do que o fluxo de criação padrão.
Para a maioria das implantações, o Databricks recomenda o fluxo de criação de Workspace padrão, que usa o console da account e permissões mais amplas para provisionar recursos automaticamente. Consulte Criar um Workspace clássico.
Esta página descreve um fluxo de trabalho avançado, orientado por API, que não oferece suporte a novas tentativas. Conclua e verifique cada passo em ordem. Se um passo for perdido ou mal configurado, você deve excluir o Workspace e começar de novo.
Como funciona a criação de Workspace com privilégio mínimo
A criação de Workspace com privilégio mínimo usa dois conjuntos distintos de IAM roles, cada um atribuído a uma account de serviço Google diferente:
- Criador de Workspace : Uma account de serviço do Google que você possui e usa para chamar a API da Account. Ele precisa apenas de permissões de nível de leitura para validar as configurações durante a criação. Concede a ele os papéis de criador do Workspace descritos em Papéis de criador do Workspace.
- **Conta de serviço do Workspace**: Uma conta de serviço do Google que o Databricks cria em seu plano de controle regional e retorna a você durante a criação do workspace. Conceda a ele as funções de operador do workspace para que possa operar e gerenciar o workspace.
Como a Databricks retorna a account de serviço do Workspace no meio da criação, o fluxo é dividido em duas fases: você cria o Workspace em estado PROVISIONING, concede as funções de operador à account de serviço retornada e, em seguida, atualiza o Workspace para que ele fique em estado RUNNING. Você faz essas chamadas diretamente contra a API de account e cria os recursos do Google Cloud com a CLI gcloud.
Antes de começar
Conclua os seguintes pré-requisitos antes de criar um Workspace.
Crie os IAM roles necessários
Antes de começar, você deve criar uma série de IAM roles nos seus projetos GCP:
-
Crie o(s) IAM role(s) do criador do Workspace. Consulte IAM roles de criador de Workspace com menos privilégios. Os IAM roles que você cria dependem da sua configuração de rede:
- Se você criar seu Workspace em uma VPC compartilhada, crie a função de projeto de serviço e a função de projeto host.
- Se o workspace for criado em uma VPC independente, crie apenas a função abrangente.
-
Crie as três IAM roles de operador do Workspace. Consulte Funções de operador de Workspace com privilégio mínimo.
Configure o serviço account de criação de workspace
-
Crie um novo serviço de account Google ou selecione um existente.
-
Atribua a(s) IAM role(s) de criação de Workspace criada(s) ao serviço account, vinculando cada IAM role ao projeto apropriado:
- Para uma VPC compartilhada, vincule o papel do projeto de serviço no projeto de serviço (Workspace) e o papel do projeto host no projeto host (VPC).
- Para uma VPC autônoma, vincule a função abrangente no projeto do workspace.
Para conceder uma função em um projeto, use
gcloud projects add-iam-policy-binding:Bashgcloud projects add-iam-policy-binding <project-id> \
--member="serviceAccount:<creator-sa-email>" \
--role="projects/<project-id>/roles/<creator-role-id>" -
Adicione a account de serviço como usuário no console da account do Databricks.
-
Atribua ao serviço de account o IAM role de **Account Admin** em sua account Databricks. See Service Principal.
Verifique a regra de firewall da VPC.
Confirme se seu VPC tem a regra de firewall de entrada intrassub-rede default que permite a comunicação interna entre instâncias de VM na mesma sub-rede. Descreva a regra para confirmar sua existência:
gcloud compute firewall-rules describe default-allow-internal \
--project=<vpc-host-project-id>
A regra deve ter as seguintes propriedades, onde o intervalo de origem corresponde ao intervalo de sub-rede do Databricks:
- Direção :
INGRESS - Prioridade :
65534 - Intervalos de origem : seu intervalo de sub-rede do Databricks
- Protocolos permitidos : todos
Se uma regra equivalente não existir, crie uma. Para mais informações sobre as regras de firewall default, consulte a documentação do GCP.
Configurar autenticação
As chamadas da API da Account nesta página autenticam com tokens de ID do Google. Para manter os comandos nesta seção legíveis, eles usam um modelo de account única : a CLI gcloud autentica diretamente como a account de serviço criadora do Workspace, que atua tanto como a account de serviço criadora de tokens quanto a proprietária de recursos.
Para implantações de produção e regulamentadas, a Databricks recomenda um modelo de duas contas de serviço, no qual uma conta de serviço criadora de token (SA-1) representa uma conta de serviço proprietária de recurso (SA-2), em vez de manter uma key de longa duração. Para aplicar esse modelo aqui, trate a conta de serviço criadora do Workspace como SA-2 e crie uma SA-1 separada para representá-la. Para as etapas de configuração e limites de expiração de tokens, consulte Autenticar com tokens de ID do Google.
As chamadas de API nesta página usam dois tokens de curta duração. Gere-os imediatamente antes de fazer chamadas de API para evitar a expiração:
-
Um **token de identidade** que o Databricks usa para verificar o chamador (passado no
Authorizationcabeçalho):Bashgcloud auth print-identity-token --audiences="https://accounts.gcp.databricks.com" -
Um access token OAuth do Google para transmissão de credenciais (passado no
X-Databricks-GCP-SA-Access-Tokencabeçalho):Bashgcloud auth print-access-token
Os exemplos nesta página pressupõem que você armazenou esses valores nas variáveis de ambiente ID_TOKEN e ACCESS_TOKEN. Para detalhes sobre esses cabeçalhos, consulte Autenticar com tokens de ID do Google.
Passo 1: Crie a configuração de rede e os recursos opcionais
Pré-crie sua configuração de rede, juntamente com quaisquer recursos opcionais de Private Service Connect ou chaves gerenciadas pelo cliente, antes de criar o Workspace. Se você usar o Private Service Connect, registre seus Endpoints primeiro para que possa referenciar seus IDs na configuração de rede. Cada solicitação retorna um ID que você deve registrar e passar para o Workspace no Passo 5. Cada ID também aparece na URL do console da account para o objeto.
Por exemplo, uma URL de configuração de rede tem o formato:
https://<account-console>/cloud-resources/networking/network-configurations/<network-id>/
(Opcional) Registrar endpoints do Private Service Connect
Se estiver criando um workspace habilitado para Private Service Connect, registre os endpoints antes de criar a configuração de rede para que possa fazer referência aos seus IDs nela. Crie os endpoints do Private Service Connect necessários no Google Cloud e registre-os com o Databricks. Para requisitos e instruções, consulte Ative o Private Service Connect para seu workspace.
Se não estiver usando o Private Service Connect, pule para Criar a configuração de rede.
Registre o Endpoint de VPC do Workspace:
curl -X POST \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/vpc-endpoints \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vpc_endpoint_name": "<frontend-endpoint-name>",
"gcp_vpc_endpoint_info": {
"project_id": "<vpc-host-project-id>",
"psc_endpoint_name": "<workspace-psc-endpoint-name>",
"endpoint_region": "us-central1"
}
}'
Registre o backend (relay) Endpoint da VPC:
curl -X POST \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/vpc-endpoints \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vpc_endpoint_name": "<backend-endpoint-name>",
"gcp_vpc_endpoint_info": {
"project_id": "<vpc-host-project-id>",
"psc_endpoint_name": "<relay-psc-endpoint-name>",
"endpoint_region": "us-central1"
}
}'
Registre o vpc_endpoint_id de cada resposta. Ao criar a configuração de rede na próxima seção, use o ID de front-end em seu campo rest_api e o ID de back-end em seu campo dataplane_relay.
Crie também um objeto de configurações de acesso privado:
curl -X POST \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/private-access-settings \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"private_access_settings_name": "<pas-name>",
"region": "us-central1",
"public_access_enabled": true,
"private_access_level": "ACCOUNT"
}'
Registre o private_access_settings_id da resposta.
Crie a configuração de rede
Crie uma configuração de rede que representa sua VPC gerenciada pelo cliente e suas sub-redes. Para requisitos e instruções do console, consulte Configurar uma VPC gerenciada pelo cliente.
A solicitação a seguir cria uma configuração de rede. O network_name deve ter entre 3 e 30 caracteres e conter apenas os caracteres a-z, A-Z, - e _. Se utilizar o Private Service Connect, inclua o campo vpc_endpoints com os IDs de Endpoint da VPC que foram registrados em Registro de Endpoints do Private Service Connect; caso contrário, omita-o.
curl -X POST \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/networks \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"network_name": "<network-name>",
"gcp_network_info": {
"network_project_id": "<vpc-host-project-id>",
"vpc_id": "<vpc-id>",
"subnet_id": "<subnet-id>",
"subnet_region": "us-central1"
},
"vpc_endpoints": {
"dataplane_relay": ["<relay-vpc-endpoint-id>"],
"rest_api": ["<workspace-vpc-endpoint-id>"]
}
}'
Registre o network_id da resposta.
(Opcional) Configurar chaves gerenciadas pelo cliente
Como parte da pré-criação, se você estiver criando um workspace habilitado para keys gerenciadas pelo cliente, configure e registre suas keys agora. Você passa os IDs das keys retornadas para o workspace mais tarde, na Etapa 5:
-
Crie uma key KMS da Cloud no Google Cloud.
-
Para criptografia de armazenamento do workspace, conceda a função **Cloud KMS CryptoKey Encrypter/Decrypter** ao agente de serviço Compute Engine default e ao agente de serviço Cloud Storage default no projeto do workspace:
Bashgcloud kms keys add-iam-policy-binding KEY_NAME \
--keyring=KEY_RING \
--location=LOCATION \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
--member=serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
--member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com -
Registre a key no Databricks para armazenamento e serviços gerenciados. Para requisitos, consulte Configurar chaves gerenciadas pelo cliente para criptografia.
Bashcurl -X POST \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/customer-managed-keys \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"gcp_key_info": {
"kms_key_id": "<kms-key-resource-id>",
"manual": true
},
"use_cases": ["STORAGE", "MANAGED"]
}'Registre o
customer_managed_key_idda resposta.Defina
"manual": truepara que o Databricks não tente conceder a si mesmo acesso à key KMS. Em um Workspace de privilégio mínimo, você concede esse acesso a si mesmo: a função de codificador/decodificador para armazenamento é concedida acima, e a função para serviços gerenciados é concedida à account de serviço do Workspace mais tarde, no Passo 4.
Passo 2: Crie a account de serviço databricks-compute
Crie a account de serviço databricks-compute usada por todos os recursos de compute no Workspace que não têm uma account de serviço personalizada anexada. Esta account de serviço tem permissões mínimas, limitadas a registro e métricas.
gcloud iam service-accounts create databricks-compute \
--display-name="Databricks Compute Service Account" \
--project=<workspace-project-id>
Passo 3: Crie o Workspace
Crie o Workspace em um estado PROVISIONING chamando a API da conta. Autentique com o access token e o token de identidade de Configurar autenticação. Inclua apenas os campos aplicáveis ao seu Workspace. Por exemplo, omita os campos Private Serviço Connect e keys gerenciadas pelo cliente se não os estiver usando.
curl -X POST \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/workspaces \
-H "X-Databricks-GCP-SA-Access-Token: $ACCESS_TOKEN" \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"workspace_name": "<workspace-name>",
"cloud": "gcp",
"cloud_resource_container": {
"gcp": {
"project_id": "<workspace-project-id>"
}
},
"location": "us-central1",
"pricing_tier": "ENTERPRISE",
"expected_workspace_status": "PROVISIONING"
}'
Uma solicitação bem-sucedida retorna uma resposta 200 que inclui o ID do workspace e a conta de serviço do workspace:
{
"account_id": "<account-id>",
"cloud": "gcp",
"cloud_resource_container": {
"gcp": {
"project_id": "my-gcp-project"
}
},
"creation_time": 1643668346544,
"deployment_name": "1614665312930232.2",
"location": "us-central1",
"pricing_tier": "ENTERPRISE",
"workspace_id": 1614665312930232,
"workspace_name": "example-workspace-name",
"workspace_status": "PROVISIONING",
"workspace_status_message": "Workspace resources are being set up.",
"workspace_service_account": "<workspace-service-account>"
}
Registre o valor workspace_service_account da resposta. Você concede as funções de operador a esta conta de serviço no próximo passo.
O passo 4: Conceda funções à conta de serviço do workspace
Conceda as funções de operador do workspace à conta de serviço do workspace retornada na Etapa 3, usando o valor workspace_service_account dessa resposta.
Conceda as seguintes funções no nível do projeto no projeto de serviço (Workspace):
lpw.databricks.project.role.v2lpw.databricks.resource.role.v2Delimite esta concessão ao Workspace adicionando uma condição do IAM na ID do Workspace.
Para as permissões que cada função inclui, consulte Funções de operador de Workspace com privilégio mínimo.
Vincule o papel de rede à sub-rede
Vincule a função de rede à account de serviço do Workspace na sub-rede do Databricks. Isso se aplica à sub-rede principal usada pelo Workspace:
gcloud compute networks subnets add-iam-policy-binding <subnet> \
--project=<vpc-host-project-id> \
--region=us-central1 \
--member="serviceAccount:<workspace-service-account>" \
--role="projects/<vpc-host-project-id>/roles/lpw.databricks.network.role.v2"
(Opcional) Conceda a função de criptografia/descriptografia de chaves gerenciadas pelo cliente para serviços gerenciados
Se você estiver usando keys gerenciadas pelo cliente para serviços gerenciados, conceda a função de **Criptografador/Descriptografador de CryptoKey do Cloud KMS** à account de serviço do workspace para habilitar a criptografia para serviços gerenciados:
gcloud kms keys add-iam-policy-binding KEY_NAME \
--keyring=KEY_RING \
--location=LOCATION \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
--member=serviceAccount:db-WORKSPACEID@db-regional-cp-project.iam.gserviceaccount.com
Pare e verifique se todos os passos anteriores foram concluídos antes de continuar. O fluxo de criação do workspace não oferece suporte a novas tentativas. Se um passo for ignorado ou configurado incorretamente, a criação do workspace falhará e você deverá excluir o workspace e começar novamente.
O passo 5: Atualize o workspace para usar sua configuração de rede
Atualize o workspace com a configuração de rede e os IDs opcionais de Private Service Connect e keys gerenciadas pelo cliente que você registrou na Etapa 1. Esta solicitação começa o provisionamento final, que então continua assincronamente.
Inclua apenas os campos que se aplicam ao seu Workspace. Por exemplo, omita os campos de keys gerenciadas pelo cliente se você não os estiver usando.
curl -X PATCH \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/workspaces/<workspace-id> \
-H "X-Databricks-GCP-SA-Access-Token: $ACCESS_TOKEN" \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"network_id": "<network-id>",
"private_access_settings_id": "<private-access-settings-id>",
"storage_customer_managed_key_id": "<storage-customer-managed-key-id>",
"managed_services_customer_managed_key_id": "<managed-services-customer-managed-key-id>"
}'
Uma solicitação bem-sucedida retorna uma resposta 200. O workspace_status ainda é PROVISIONING, não RUNNING, porque as operações de provisionamento restantes são executadas assincronamente após o retorno da solicitação:
{
"workspace_id": 1614665312930232,
"workspace_name": "example-workspace-name",
"workspace_status": "PROVISIONING",
"workspace_status_message": "Workspace resources are being set up.",
"account_id": "<account-id>",
"network_id": "<network-id>",
"pricing_tier": "ENTERPRISE",
"location": "us-central1",
"cloud": "gcp"
}
Se a solicitação falhar, a resposta indicará a causa. Por exemplo:
- Um erro
400 BAD_REQUESTindica permissões insuficientes no projeto do Google Cloud. Revise as concessões de função de operador no passo 4. - Um erro
404 RESOURCE_DOES_NOT_EXISTindica que um ID de configuração referenciado, como o ID de rede, não existe. Confirme os IDs que você registrou no o passo 1.
O provisionamento normalmente é concluído em poucos minutos. Sonde o workspace até que seu workspace_status se torne RUNNING antes de continuar:
curl -X GET \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/workspaces/<workspace-id> \
-H "Authorization: Bearer $ID_TOKEN"
Após criar o workspace
Depois que o Workspace atingir o estado RUNNING:
- **Configure o Domain Name System (DNS) para PSC.** Se o seu Workspace usa Private Service Connect, conclua a configuração de DNS. Consulte Ativar Private Service Connect para seu Workspace.
- Verifique o Workspace. Confirme se o Workspace está configurado corretamente iniciando um cluster do Databricks.
Crie um catálogo com suporte no seu armazenamento em cloud
Se um metastore do Unity Catalog ainda não existir na mesma região do workspace, o Databricks criará um metastore e o atribuirá ao workspace. Nenhum catálogo default é criado automaticamente.
Para deixar o Workspace pronto para dados, crie um catálogo com base no seu armazenamento cloud:
- Crie uma credencial de armazenamento. Consulte Criar uma credencial de armazenamento que acessa o GCS.
- Crie um local externo. Consulte Crie um local externo para um bucket GCS.
- Crie um catálogo. Consulte Criar catálogos.
Próximos passos
Depois de criar um Workspace com menos privilégios, você pode começar a desenvolver sua estratégia de dados. O Databricks recomenda as seguintes páginas:
- Adicione usuários, grupos e Service Principals ao seu Workspace. Consulte Gerenciar usuários, Service Principal e grupos.
- Saiba mais sobre governança de dados e privilégios no Databricks. Consulte O que é Unity Catalog?.
- Conecte o workspace do Databricks a fontes de dados externas. Consulte Conecte-se a fontes de dados e serviços externos.
- Incorpore seus dados no Workspace. Consulte Conectores padrão no Lakeflow Connect.