Esta página descreve como começar a usar o controlo de acesso baseado em funções (RBAC) em instâncias do Cloud Data Fusion. O RBAC está disponível em instâncias do Cloud Data Fusion executadas nas versões 6.5 e posteriores.
Para mais informações, consulte a vista geral do controlo de acesso baseado em funções (CABF).
Recomendado: a menos que seja necessário para fins de automatização, use a Google Cloud consola para realizar as suas tarefas de RBAC.
Ative o RBAC para uma instância existente
Pode ativar o RBAC para uma instância do Cloud Data Fusion existente com a versão 6.5 ou posterior.
Consola
Para ativar o RBAC numa instância do Cloud Data Fusion existente:
- Aceda aos detalhes da instância:
Na Google Cloud consola, aceda à página do Cloud Data Fusion.
Clique em Instâncias e, de seguida, clique no nome da instância para aceder à página Detalhes da instância.
- Certifique-se de que a instância foi atualizada para a versão 6.5 ou posterior. Se a instância for anterior à versão 6.5, atualize-a para a versão 6.5 ou posterior.
- Clique em Ativar CABF.
- Clique em Guardar.
- Aguarde pela conclusão da operação de atualização da instância.
gcloud
Para ativar o RBAC numa instância existente do Cloud Data Fusion, execute o seguinte comando:
gcloud beta data-fusion instances update --enable_rbac --location=REGION INSTANCE_ID
API REST
Ative o RBAC para uma instância existente com a API patch do Cloud Data Fusion. Defina a flag enableRbac
como true
e use o parâmetro de consulta updateMask
com o seguinte comando de exemplo:
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "true"}'
Desative o RBAC para uma instância existente
Se tiver uma instância existente com o RBAC ativado, pode desativá-lo, se necessário. A desativação do RBAC não afeta nenhum pipeline nem configuração existentes na instância. Desativa apenas o isolamento de segurança entre espaços de nomes.
Consola
Para desativar o RBAC numa instância do Cloud Data Fusion existente:
Aceda aos detalhes da instância:
Na Google Cloud consola, aceda à página do Cloud Data Fusion.
Clique em Instâncias e, de seguida, clique no nome da instância para aceder à página Detalhes da instância.
Clique em Desativar CABF.
Clique em Guardar.
Aguarde pela conclusão da operação de atualização da instância.
gcloud
Para desativar o RBAC para uma instância existente, use o argumento --no-enable_rbac em vez de --enable-rbac.
gcloud beta data-fusion instances update --no-enable_rbac --location=REGION INSTANCE_ID
Exemplo de utilização:
gcloud beta data-fusion instances update --no-enable_rbac --location=us-east1 cdf-test-instance
API REST
Desative o RBAC para uma instância existente com a API patch do Cloud Data Fusion. Defina a flag enableRbac
como false
e use o parâmetro de consulta updateMask
com o seguinte comando de exemplo:
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "false"}'
Crie uma nova instância com RBAC
Consola
Para criar uma nova instância do Cloud Data Fusion com a RBAC ativada:
Aceda à página Instâncias do Cloud Data Fusion.
Clique em Instâncias.
Clique em Criar uma instância e introduza os detalhes da instância.
Selecione a edição Enterprise. O RBAC só é suportado na edição Enterprise.
Em Opções avançadas, selecione Ativar controlo de acesso detalhado baseado em funções.
Esta funcionalidade só está disponível em instâncias que usam a versão 6.5 e posterior do Cloud Data Fusion.
Clique em Criar.
gcloud
Para criar uma nova instância com RBAC, execute o seguinte comando:
gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=REGION INSTANCE_ID \
--version=6.5.0
Exemplo de utilização:
gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=us-east1 \
--version=6.5.0
API REST
Para criar uma instância com RBAC através da API REST, transmita a flag enableRbac
definida como true
nas opções da instância, conforme mostrado nos seguintes comandos:
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances?instanceId=$INSTANCE -X POST -d '{"description": "RBAC CDF instance created through REST", "type": "ENTERPRISE", "enableRbac": "true"}'
Conceda funções predefinidas do Cloud Data Fusion aos utilizadores (obrigatório)
Depois de a RBAC estar ativada, atribui funções a principais para lhes permitir realizar ações específicas numa instância ou num espaço de nomes. Para decidir que funções cumprem melhor os seus requisitos, consulte as funções predefinidas do Cloud Data Fusion e as recomendações de segurança.
Consola
Para conceder funções predefinidas do Cloud Data Fusion a principais:
Aceda à página Autorizações do Cloud Data Fusion.
Clique em Adicionar
.É aberta uma caixa de diálogo Adicionar acesso de utilizadores.
No campo Novos membros, introduza uma lista de membros (utilizadores, grupos ou emails de contas de serviço) aos quais conceder funções.
Selecione a caixa junto a cada instância para a qual quer conceder estas autorizações.
Aceda à coluna Função e selecione o menu pendente junto às instâncias escolhidas.
Para conceder autorizações de administrador da instância, selecione Administrador da instância.
Para conceder autorizações ao nível do espaço de nomes, selecione Utilizador do espaço de nomes.
Se estiver a conceder autorizações ao nível do espaço de nomes, clique em Selecionar.
É apresentada uma caixa de diálogo Adicionar direitos de acesso.
Selecione um espaço de nomes e selecione a função do Cloud Data Fusion predefinida que quer conceder para o espaço de nomes.
Clique em Selecionar para guardar as novas definições.
Opcional: para conceder autorizações de espaço de nomes a outras instâncias, repita o passo 5.
Clique em Guardar.
Para verificar as funções que foram concedidas, consulte o artigo Verifique as funções na Google Cloud consola.
gcloud
Pode usar a CLI Google Cloud para controlar o acesso programaticamente.
Para conceder uma função através da CLI gcloud, use uma lista de identificadores de utilizadores separados por vírgulas no seguinte formato:
[user|group|serviceAccount][email_address]
Indique os seguintes valores:
user:useremail@example.com
group:groupemail@example.com
serviceAccount:serviceaccount@project.iam.gserviceaccount.com
Para mais exemplos, consulte o artigo Conceda uma função.
Conceda a função Instance Accessor (obrigatória)
Primeiro, tem de conceder a um utilizador acesso à instância atribuindo-lhe a função de acesso numa instância:
Exporte as seguintes variáveis com o seguinte comando, substituindo as variáveis pelos seus próprios valores:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export USER_ID=EMAIL export USER_TYPE=USER_TYPE
Substitua as seguintes variáveis pelos seus próprios valores:
- PROJECT_ID: o nome do seu projeto.
- INSTANCE_ID: o nome da sua instância.
- REGION: a região à qual o projeto pertence.
- EMAIL: o endereço de email do principal.
- USER_TYPE: O tipo de utilizador pode ser um dos seguintes: user, group ou serviceAccount.
Execute o seguinte comando para atribuir a função:
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
Conceder funções a um espaço de nomes (dependente do exemplo de utilização)
Consoante o seu exemplo de utilização, atribua funções com os seguintes comandos:
Exporte as seguintes variáveis com o seguinte comando, substituindo as variáveis pelos seus próprios valores:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export NAMESPACE=NAMESPACE export USER_ID=EMAIL export USER_TYPE=USER_TYPE
Substitua as seguintes variáveis pelos seus próprios valores:
- PROJECT_ID: o nome do seu projeto.
- INSTANCE_ID: o nome da sua instância.
- REGION: a região à qual o projeto pertence.
- NAMESPACE: o nome do espaço de nomes.
- EMAIL: o endereço de email do principal.
- USER_TYPE: O tipo de utilizador pode ser um dos seguintes: user, group ou serviceAccount.
Execute o seguinte comando para atribuir uma função a um principal num determinado espaço de nomes:
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="roles/ROLE_NAME"
Substitua ROLE_NAME por um dos seguintes valores:
- Para a função de editor de um espaço de nomes, use
datafusion.editor
- Para a função de operador de um espaço de nomes, use
datafusion.operator
- Para a função de programador de um espaço de nomes, use
datafusion.developer
- Para a função de leitor de um espaço de nomes, use
datafusion.viewer
- Para a função de editor de um espaço de nomes, use
Opcional: revogue funções do espaço de nomes
Para revogar a função concedida a um utilizador para um determinado espaço de nomes, use o seguinte comando:
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
export USER_ID=EMAIL
# User type can be one of: user, group, or serviceAccount.
export USER_TYPE=USER_TYPE
export ROLE=ROLE_NAME
gcloud beta data-fusion remove-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="${ROLE}"
Opcional: liste as funções concedidas num determinado espaço de nomes
Para apresentar uma lista de todas as funções concedidas num determinado espaço de nomes, use o comando seguinte para obter a política de IAM:
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}
API REST
Conceda a função Instance Accessor (obrigatória)
Primeiro, tem de conceder a um utilizador acesso à instância atribuindo-lhe a função de acesso numa instância.
Recomendado vivamente: use a CLI gcloud para conceder a função de acesso.
Conceda a função de acessor numa instância:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export USER_ID=EMAIL # User type can be one of: user, group, or serviceAccount. export USER_TYPE=USER_TYPE alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
Obtenha a Política IAM atual e guarde-a num ficheiro:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
Adicione uma associação para a função e o utilizador na política. Por exemplo:
{ "policy": { "bindings": [ { "role": "roles/datafusion.accessor", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }
Atualize a política de IAM da instância:
gcurl \ -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
Conceder funções a um espaço de nomes (dependente do exemplo de utilização)
Consoante o seu exemplo de utilização, atribua funções com os seguintes comandos:
Exporte as seguintes variáveis com o seguinte comando, substituindo as variáveis pelos seus próprios valores:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export NAMESPACE=NAMESPACE export USER_ID=EMAIL export USER_TYPE=USER_TYPE alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
Substitua as seguintes variáveis pelos seus próprios valores:
- PROJECT_ID: o nome do seu projeto.
- INSTANCE_ID: o nome da sua instância.
- REGION: a região à qual o projeto pertence.
- NAMESPACE: o nome do espaço de nomes.
- EMAIL: o endereço de email do principal.
- USER_TYPE: O tipo de utilizador pode ser um dos seguintes: user, group ou serviceAccount.
Obtenha a Política IAM atual e guarde-a num ficheiro:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.json
Substitua iam_policy.json pelo seu próprio nome de ficheiro.
Adicione uma associação para a função e o utilizador no ficheiro de política. Por exemplo, o ficheiro de política pode ter o seguinte aspeto:
{ "policy": { "bindings": [ { "role": "roles/ROLE_NAME", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }
Podem ser especificadas várias associações de funções para uma determinada política, e podem ser especificados vários diretores na lista members para uma determinada associação de funções. Para um determinado principal, substitua ROLE_NAME por um dos seguintes valores:
- Para a função de editor de um espaço de nomes, use
datafusion.editor
- Para a função de operador de um espaço de nomes, use
datafusion.operator
- Para a função de programador de um espaço de nomes, use
datafusion.developer
- Para a função de leitor de um espaço de nomes, use
datafusion.viewer
- Para a função de editor de um espaço de nomes, use
Execute o seguinte comando para atualizar o ficheiro de políticas:
gcurl -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:setIamPolicy
Substitua iam_policy.json pelo seu próprio nome de ficheiro.
Valide as funções na Google Cloud consola
Reveja e edite as funções existentes na página Autorizações do Cloud Data Fusion.
Valide as funções com o ficheiro de políticas
Verifique se as funções são concedidas aos utilizadores corretos no ficheiro da política do IAM através da CLI gcloud ou da API REST.
No exemplo de ficheiro de política de IAM seguinte, o utilizador
alice@example.com
tem a função de programador do Data Fusion:
bindings:
- members:
- user:alice@example.com
role: roles/datafusion.developer
- members:
- user:bob@example.com
- serviceAccount:myserviceaccount@myproject.iam.gserviceaccount.com
role: roles/datafusion.operator
- members:
- user:james@example.com
- user:mike@example.com
- group:mygroup@googlegroups.com
role: roles/datafusion.editor
etag: BwXA8BAHYmw=
Obtenha a Política IAM para uma instância
gcloud
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION}
cURL
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy
Obtenha a Política IAM para um espaço de nomes
gcloud
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}
cURL
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export NAMESPACE=NAMESPACE
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/${NAMESPACE}:getIamPolicy
O que se segue?
- Saiba mais acerca do controlo de acesso com base em funções no Cloud Data Fusion.