Nesta página, descrevemos como dar os primeiros passos com o controle de acesso baseado em papéis (RBAC, na sigla em inglês) em instâncias do Cloud Data Fusion. O RBAC está disponível nas instâncias do Cloud Data Fusion em execução nas versões 6.5 e posteriores.
Para mais informações, consulte a visão geral do controle de acesso baseado em papéis (RBAC).
Recomendado:a menos que seja necessário para fins de automação, usar o console do Google Cloud para realizar tarefas de RBAC.
Ativar o RBAC para uma instância existente
É possível ativar o Cloud Data Fusion de acesso baseado em função (RBAC) em uma instância em execução na versão 6.5 ou mais recente.
Console
Para ativar o RBAC em uma instância atual do Cloud Data Fusion:
- Acesse os detalhes da instância:
No console do Google Cloud, acesse a página do Cloud Data Fusion.
Clique em Instâncias e no nome da instância para acessar a página Detalhes da instância.
- Verifique se a instância fez upgrade para a versão 6.5 ou posterior. Se a instância for anterior à 6.5, faça upgrade dela para a versão 6.5 ou mais recente.
- Clique em Ativar RBAC.
- Clique em Save.
- Aguarde a conclusão da operação de atualização de instância.
gcloud
Para ativar o RBAC em uma instância atual do Cloud Data Fusion, execute o seguinte comando:
gcloud beta data-fusion instances update --enable_rbac --location=REGION INSTANCE_ID
API REST
Ative o controle de acesso baseado em função (RBAC) para uma instância atual com o
Patch do Cloud Data Fusion
API. Defina a sinalização enableRbac
como true
e use o parâmetro de
consulta updateMask
usando 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"}'
Desativar o RBAC de uma instância existente
Se você tiver uma instância com o RBAC ativado, poderá desativar o RBAC, se necessário. Desativar o RBAC não afeta nenhum pipeline ou configuração atual na instância. Ele apenas desativa o isolamento de segurança nos namespaces.
Console
Para desativar o RBAC em uma instância existente do Cloud Data Fusion:
Acesse os detalhes da instância:
No console do Google Cloud, acesse a página do Cloud Data Fusion.
Clique em Instâncias e no nome da instância para acessar a página Detalhes da instância.
Clique em Desativar RBAC.
Clique em Save.
Aguarde a conclusão da operação de atualização de instância.
gcloud
Para desativar o RBAC de 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 uso:
gcloud beta data-fusion instances update --no-enable_rbac --location=us-east1 cdf-test-instance
API REST
Desative o controle de acesso baseado em função (RBAC) para uma instância atual com o
Patch do Cloud Data Fusion
API. Defina a sinalização enableRbac
como false
e use o parâmetro de
consulta updateMask
usando 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"}'
Criar uma nova instância ativada para RBAC
Console
Para criar uma nova instância do Cloud Data Fusion com o RBAC ativado, siga estas etapas:
Acesse a página Instâncias do Cloud Data Fusion.
Clique em Instâncias.
Clique em Criar uma instância e insira os detalhes dela.
Selecione a edição Enterprise. O RBAC só é compatível com a edição Enterprise.
Em Opções avançadas, selecione Ativar controle de acesso baseado em papéis granular.
Esse recurso está disponível apenas 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 ativada para 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 uso:
gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=us-east1 \
--version=6.5.0
API REST
Para criar uma instância ativada para RBAC usando a API REST, transmita a
sinalização 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"}'
Conceder papéis predefinidos do Cloud Data Fusion a usuários (obrigatório)
Depois que o RBAC é ativado, conceda os papéis aos principais para permitir que eles executem ações específicas em uma instância ou um namespace. Para decidir quais papéis melhor atendem aos seus requisitos, consulte os papéis predefinidos do Cloud Data Fusion e as recomendações de segurança.
Console
Para conceder papéis predefinidos do Cloud Data Fusion aos principais:
Acesse a página Permissões do Cloud Data Fusion.
Clique em Add
.Uma opção Adicionar de acesso será aberta.
No campo Novos membros, insira uma lista de principais (usuários, grupos ou e-mails da conta de serviço) para os quais você quer conceder papéis.
Marque a caixa ao lado de cada instância para a qual você quer conceder acesso permissões.
Vá para a coluna Papel e selecione o menu suspenso ao lado do instâncias escolhidas.
Para conceder permissões de administrador de instância, selecione Administrador de instância.
Para conceder permissões no nível do namespace, selecione Usuário de namespace.
Se você estiver concedendo permissões no nível do namespace, clique em Selecionar.
A caixa de diálogo Adicionar direitos de acesso é aberta.
Selecione um namespace e o papel predefinido do Cloud Data Fusion que você quer conceder ao namespace.
Clique em Selecionar para salvar as novas configurações.
Opcional: para conceder permissões de namespace a outras instâncias, repita a etapa 5.
Clique em Salvar.
Para verificar os papéis que foram concedidos, consulte Verificar papéis no console do Google Cloud.
gcloud
Use a Google Cloud CLI. controlar o acesso de maneira programática.
Para conceder um papel usando a CLI gcloud, use uma lista delimitada por vírgulas de identificadores de usuários no seguinte formato:
[user|group|serviceAccount][email_address]
Forneça os valores a seguir:
user:useremail@example.com
group:groupemail@example.com
serviceAccount:serviceaccount@project.iam.gserviceaccount.com
Para mais exemplos, consulte Conceder um papel.
Conceder o papel de acessador da instância (obrigatório)
Conceda a um usuário acesso à instância, concedendo a ele o papel de acessador em uma instância:
Exporte as variáveis a seguir com o comando a seguir, substituindo as variáveis pelos valores próprios:
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 instância.
- REGION: a região à qual o projeto pertence.
- EMAIL: o endereço de e-mail do principal.
- USER_TYPE: o tipo de usuário pode ser: user, group ou serviceAccount.
Execute o seguinte comando para atribuir o papel:
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
Conceder papéis a um namespace (dependendo do caso de uso)
Dependendo do seu caso de uso, conceda papéis com os seguintes comandos:
Exporte as variáveis a seguir com o comando a seguir, substituindo as variáveis pelos valores próprios:
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 instância.
- REGION: a região à qual o projeto pertence.
- NAMESPACE: o nome do namespace.
- EMAIL: o endereço de e-mail do principal.
- USER_TYPE: o tipo de usuário pode ser: user, group ou serviceAccount.
Execute o seguinte comando para atribuir um papel a um principal em um determinado namespace:
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 o papel de editor em um namespace, use
datafusion.editor
. - Para o papel de operador para um namespace, use
datafusion.operator
. - Para o papel de desenvolvedor em um namespace, use
datafusion.developer
. - Para o papel de leitor de um namespace, use
datafusion.viewer
.
- Para o papel de editor em um namespace, use
Opcional: revogar papéis de namespace
Para revogar o papel concedido a um usuário para um determinado namespace, 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: listar os papéis concedidos em um determinado namespace
Para listar todos os papéis concedidos em um namespace específico, use o seguinte comando para buscar a política do 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
Conceder o papel de acessador da instância (obrigatório)
Conceda a um usuário acesso à instância, concedendo a ele o papel de acessador em uma instância.
Altamente recomendável: use a CLI gcloud para conceder o papel de acessador.
Conceda o papel de acessador em uma 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"'
Busque a política atual do IAM e salve-a em um arquivo:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
Adicione uma vinculação para o papel e o usuário na política. Exemplo:
{ "policy": { "bindings": [ { "role": "roles/datafusion.accessor", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }
Atualize a política do IAM da instância:
gcurl \ -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
Conceder papéis a um namespace (dependendo do caso de uso)
Dependendo do seu caso de uso, conceda papéis com os seguintes comandos:
Exporte as variáveis a seguir com o comando a seguir, substituindo as variáveis pelos valores próprios:
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 instância.
- REGION: a região à qual o projeto pertence.
- NAMESPACE: o nome do namespace.
- EMAIL: o endereço de e-mail do principal.
- USER_TYPE: o tipo de usuário pode ser: user, group ou serviceAccount.
Busque a política atual do IAM e salve-a em um arquivo:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.json
Substitua iam_policy.json pelo nome do seu arquivo.
Adicione uma vinculação para o papel e o usuário no arquivo de política. Por exemplo, o arquivo de política pode ser assim:
{ "policy": { "bindings": [ { "role": "roles/ROLE_NAME", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }
Várias vinculações de papéis podem ser especificadas para uma determinada política, e diversos principais podem ser especificados na lista members para um determinado papel vinculação. Para um determinado principal, substitua ROLE_NAME por um dos seguintes valores:
- Para o papel de editor em um namespace, use
datafusion.editor
. - Para o papel de operador para um namespace, use
datafusion.operator
. - Para o papel de desenvolvedor em um namespace, use
datafusion.developer
. - Para o papel de leitor de um namespace, use
datafusion.viewer
.
- Para o papel de editor em um namespace, use
Execute o seguinte comando para atualizar o arquivo de política:
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 arquivo.
Verificar os papéis no console do Google Cloud
Revise e edite os papéis atuais na página Permissões do Cloud Data Fusion.
Verificar papéis com o arquivo de política
Verifique se os papéis foram concedidos aos usuários corretos na O arquivo de política do IAM usando a CLI gcloud ou a API REST.
No exemplo de arquivo de política do IAM a seguir, o usuário
alice@example.com
tem o papel de desenvolvedor 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=
Acessar a política de IAM de 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
Acessar a política de IAM de um namespace
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
A seguir
- Saiba mais sobre o controle de acesso baseado em papéis no Cloud Data Fusion.