Mudanças nos controles de acesso no nível do conjunto de dados
Se você ativar a aplicação da configuração
enable_fine_grained_dataset_acls_option para controles de acesso no nível do conjunto de dados, a permissão bigquery.datasets.getIamPolicy
Identity and Access Management (IAM) será necessária para visualizar os controles de acesso de um conjunto de dados e consultar a visualização
INFORMATION_SCHEMA.OBJECT_PRIVILEGES. A permissão bigquery.datasets.setIamPolicy é necessária para atualizar os controles de acesso de um conjunto de dados ou para criar um conjunto de dados com controles de acesso usando a API.
Se você não ativar, os controles de acesso no nível do conjunto de dados não serão alterados.
Ativar a aplicação
É possível ativar a aplicação das mudanças de permissão. Quando você ativa, a permissão bigquery.datasets.getIamPolicy é necessária para acessar os controles de acesso de um conjunto de dados, e a permissão bigquery.datasets.setIamPolicy é necessária para atualizar os controles de acesso de um conjunto de dados ou para criar um conjunto de dados com controles de acesso usando a API.
Para ativar a aplicação, defina a configuração enable_fine_grained_dataset_acls_option como TRUE no nível da organização ou do projeto. Se você quiser desativar depois de ativar, defina a configuração enable_fine_grained_dataset_acls_option como FALSE no nível da organização ou do projeto. Para
instruções sobre como ativar as configurações, consulte Gerenciar configurações
.
Exemplos de configuração
Os exemplos a seguir mostram como definir e remover a configuração enable_fine_grained_dataset_acls_option.
Definir as configurações da organização
Para definir as configurações da organização, use a
ALTER ORGANIZATION SET OPTIONS instrução DDL.
O exemplo a seguir define enable_fine_grained_dataset_acls_option como TRUE no nível da organização:
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
Substitua REGION pela
região
associada à sua organização, por exemplo, us ou europe-west6.
O exemplo a seguir limpa a configuração enable_fine_grained_dataset_acls_option no nível da organização:
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
Definir configurações do projeto
Para definir as configurações do projeto, use a instrução DDL ALTER PROJECT SET OPTIONS.
A instrução DDL ALTER PROJECT SET OPTIONS aceita opcionalmente a variável project_id. Quando o project_id não é especificado, o padrão é o projeto atual em que a consulta é executada.
O exemplo a seguir define enable_fine_grained_dataset_acls_option como TRUE.
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
Substitua PROJECT_ID pela ID do seu projeto.
O exemplo a seguir limpa a configuração enable_fine_grained_dataset_acls_option no nível do projeto:
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
Mudanças em papéis personalizados
Se você ativar a aplicação das mudanças de permissão, todos os papéis personalizados que concedem a permissão bigquery.datasets.get, bigquery.datasets.create ou bigquery.datasets.update e que não concedem a permissão bigquery.datasets.getIamPolicy ou bigquery.datasets.setIamPolicy serão afetados.
Todos os papéis personalizados que incluem apenas a permissão bigquery.datasets.get,
bigquery.datasets.update, ou bigquery.datasets.create precisam ser
atualizados para incluir a permissão bigquery.datasets.getIamPolicy ou
bigquery.datasets.setIamPolicy, se você quiser
manter a funcionalidade atual dos papéis personalizados. Se os papéis personalizados precisarem visualizar ou atualizar apenas os metadados de um conjunto de dados, use os novos parâmetros dataset_view e update_mode.
Os papéis predefinidos do BigQuery não são afetados por essa mudança. Todos os
papéis predefinidos que concedem a permissão bigquery.datasets.get também
concedem a permissão bigquery.datasets.getIamPolicy. Todos os papéis predefinidos que concedem a permissão bigquery.datasets.update também concedem a permissão bigquery.datasets.setIamPolicy.
Mudanças nos comandos da ferramenta de linha de comando bq
Quando você ativa a aplicação antecipada, os comandos da ferramenta bq a seguir são afetados.
bq show
É possível usar o bq show
comando com a seguinte flag:
--dataset_view={METADATA|ACL|FULL}- Especifica como aplicar permissões ao visualizar os controles de acesso ou metadados de um conjunto de dados.
Use um dos seguintes valores:
METADATA: visualizar apenas os metadados do conjunto de dados. Esse valor exige a permissãobigquery.datasets.get.ACL: visualizar apenas os controles de acesso do conjunto de dados. Esse valor exige a permissãobigquery.datasets.getIamPolicy.FULL: visualizar os metadados e os controles de acesso do conjunto de dados. Este valor exige a permissãobigquery.datasets.getebigquery.datasets.getIamPolicypermissões.
bq update
É possível usar o bq update
comando com a seguinte flag:
--update_mode={UPDATE_METADATA|UPDATE_ACL|UPDATE_FULL}- Especifica como aplicar permissões ao atualizar os controles de acesso ou metadados de um conjunto de dados.
Use um dos seguintes valores:
UPDATE_METADATA: atualizar apenas os metadados do conjunto de dados. Esse valor exige a permissãobigquery.datasets.update.UPDATE_ACL: atualizar apenas os controles de acesso do conjunto de dados. Esse valor exige a permissãobigquery.datasets.setIamPolicy.UPDATE_FULL: atualizar os metadados e os controles de acesso do conjunto de dados. Esse valor exige as permissõesbigquery.datasets.updateebigquery.datasets.setIamPolicy.
Mudanças nas instruções da linguagem de controle de dados (DCL)
Quando você ativa a aplicação antecipada, as permissões a seguir são necessárias para
executar GRANT e REVOKE instruções em conjuntos de dados usando a linguagem de controle de dados
(DCL):
bigquery.datasets.setIamPolicy
Mudanças nas consultas de visualização INFORMATION_SCHEMA
Quando você ativa a aplicação antecipada, a bigquery.datasets.getIamPolicy
permissão é necessária para consultar a
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
visualização.
Mudanças nos métodos da API
Depois de ativar a aplicação antecipada, os métodos de conjunto de dados da API REST v2 a seguir serão afetados.
Método datasets.get
O datasets.get método tem
um parâmetro de consulta
adicional chamado dataset_view.
Esse parâmetro oferece mais controle sobre as informações retornadas pelo método datasets.get. Em vez de sempre retornar controles de acesso e metadados, o parâmetro dataset_view permite especificar se você quer retornar apenas metadados, apenas controles de acesso ou ambos.
O campo access no recurso do conjunto de dados
contém os controles de acesso do conjunto de dados. Os outros campos, como friendlyName, description e labels, representam os metadados do conjunto de dados.
A tabela a seguir mostra a permissão necessária e a resposta da API para os diferentes valores aceitos pelo parâmetro dataset_view:
| Valor de parâmetro | Permissões necessárias | Resposta da API |
|---|---|---|
DATASET_VIEW_UNSPECIFIED (ou vazio) |
|
O valor padrão. Retorna os metadados e os controles de acesso do conjunto de dados. |
METADATA |
|
Retorna os metadados do conjunto de dados. |
ACL |
|
Retorna os controles de acesso do conjunto de dados, os campos obrigatórios e os campos no recurso do conjunto de dados que são apenas de saída. |
FULL |
|
Retorna os metadados e os controles de acesso do conjunto de dados. |
Se você não ativar a aplicação antecipada ou se desativar depois de ativar, poderá usar o parâmetro dataset_view com os valores METADATA ou ACL. Os valores FULL e DATASET_VIEW_UNSPECIFIED (ou vazio) são definidos como o comportamento anterior. A permissão bigquery.datasets.get permite acessar metadados e controles de acesso.
Exemplo
O exemplo a seguir envia uma solicitação GET com o parâmetro dataset_view definido como METADATA:
GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1Substitua:
- YOUR_PROJECT: o nome do projeto.
- YOUR_DATASET: o nome do conjunto de dados.
- YOUR_API_KEY: sua chave de API.
Método datasets.update
O método datasets.update
tem um parâmetro de consulta
adicional chamado update_mode.
Esse parâmetro oferece mais controle sobre os campos atualizados pelo método datasets.update. Em vez de sempre permitir atualizações nos controles de acesso e metadados, o parâmetro update_mode permite especificar se você quer atualizar apenas metadados, apenas controles de acesso ou ambos.
O campo access no recurso do conjunto de dados
contém os controles de acesso do conjunto de dados. Os outros campos, como friendlyName, description e labels, representam os metadados do conjunto de dados.
A tabela a seguir mostra a permissão necessária e a resposta da API para os diferentes valores aceitos pelo parâmetro update_mode:
| Valor de parâmetro | Permissões necessárias | Resposta da API |
|---|---|---|
UPDATE_MODE_UNSPECIFIED (ou vazio) |
|
O valor padrão. Retorna os metadados e os controles de acesso atualizados do conjunto de dados. |
UPDATE_METADATA |
|
Retorna os metadados atualizados do conjunto de dados. |
UPDATE_ACL |
|
Retorna os controles de acesso atualizados do conjunto de dados, os campos obrigatórios e campos no recurso do conjunto de dados que são apenas de saída. |
UPDATE_FULL |
|
Retorna os metadados e os controles de acesso atualizados do conjunto de dados. |
Se você não ativar a aplicação antecipada ou se desativar depois de ativar, o BigQuery será definido como o comportamento anterior. A permissão bigquery.datasets.update permite atualizar metadados e controles de acesso.
Exemplo
O exemplo a seguir envia uma solicitação PUT com o parâmetro update_mode definido como METADATA:
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1Substitua:
- YOUR_PROJECT: o nome do projeto.
- YOUR_DATASET: o nome do conjunto de dados.
- YOUR_API_KEY: o nome da chave de API.
Método datasets.patch
O método datasets.patch
tem um parâmetro de consulta
adicional chamado update_mode.
Esse parâmetro oferece mais controle sobre os campos atualizados pelo método datasets.patch. Em vez de sempre permitir atualizações nos controles de acesso e metadados, o parâmetro update_mode permite especificar se você quer atualizar apenas metadados, apenas controles de acesso ou ambos.
O campo access no recurso do conjunto de dados
contém os controles de acesso do conjunto de dados. Os outros campos, como friendlyName, description e labels, representam os metadados do conjunto de dados.
A tabela a seguir mostra a permissão necessária e a resposta da API para os diferentes valores aceitos pelo parâmetro update_mode:
| Valor de parâmetro | Permissões necessárias | Resposta da API |
|---|---|---|
UPDATE_MODE_UNSPECIFIED (ou vazio) |
|
O valor padrão. Retorna os metadados e os controles de acesso atualizados do conjunto de dados. |
UPDATE_METADATA |
|
Retorna os metadados atualizados do conjunto de dados. |
UPDATE_ACL |
|
Retorna os controles de acesso atualizados do conjunto de dados, os campos obrigatórios e campos no recurso do conjunto de dados que são apenas de saída. |
UPDATE_FULL |
|
Retorna os metadados e os controles de acesso atualizados do conjunto de dados. |
Se você não ativar a aplicação antecipada ou se desativar depois de ativar, o BigQuery será definido como o comportamento anterior. A permissão bigquery.datasets.update permite atualizar metadados e controles de acesso.
Exemplo
O exemplo a seguir envia uma solicitação PUT com o parâmetro update_mode definido como METADATA:
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1Substitua:
- YOUR_PROJECT: o nome do projeto.
- YOUR_DATASET: o nome do conjunto de dados.
- YOUR_API_KEY: o nome da chave de API.
Método datasets.insert
Se você ativar a aplicação antecipada e usar o datasets.insert método,
para criar um conjunto de dados com controles de acesso, o BigQuery vai verificar
se as permissões bigquery.datasets.create e bigquery.datasets.setIamPolicy
foram concedidas ao usuário.
Se você usar a API para criar um conjunto de dados sem controles de acesso, apenas a permissão bigquery.datasets.create será necessária.