O controle de acesso refinado do Spanner combina os benefícios Identity and Access Management (IAM) com Controle de acesso do SQL baseado em papéis. Com o controle de acesso refinado, você define papéis de banco de dados, concede privilégios a eles e cria políticas do IAM para conceder permissões em papéis de banco de dados a principais do IAM.
Como administrador, você precisa ativar o controle de acesso detalhado para cada principais. Diretores para as quais o controle de acesso refinado está ativado ("usuários de controle de acesso refinado") precisam assumir um banco de dados para acessar os recursos do Spanner.
O acesso a recursos para usuários que não são usuários de controle de acesso de alto nível é regido pelos papéis no nível do banco de dados do IAM. O controle de acesso detalhado é totalmente compatível e pode coexistir com o controle de acesso no nível do banco de dados do IAM. Ele pode ser usado para acessar objetos individuais de banco de dados. Para controlar o acesso a todo o banco de dados, use Papéis do IAM.
Com o controle de acesso detalhado, é possível controlar o acesso a tabelas, colunas, visualizações e fluxos de mudanças.
Para gerenciar o controle de acesso detalhado, use o comando DDL declarações:
- Instruções
CREATE
eDROP
para criar e descartar papéis de banco de dados. Os papéis de banco de dados são coleções de privilégios. É possível criar até 100 papéis para um banco de dados. Instruções
GRANT
eREVOKE
para conceder e revogar privilégios de e para papéis de banco de dados. Os privilégios incluemSELECT
,INSERT
,UPDATE
,DELETE
eEXECUTE
. Nomes de privilégios correspondem às instruções SQL com nomes semelhantes. Por exemplo, um papel com o O privilégioINSERT
pode executar a instrução SQLINSERT
nas tabelas que são especificadas na instruçãoGRANT
.As instruções DDL a seguir concedem
SELECT
na tabelaemployees
ao papel de banco de dadoshr_rep
.GoogleSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;
PostgreSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO hr_rep;
Para mais informações sobre privilégios, consulte Referência de privilégios de controle de acesso detalhado.
instruções
GRANT
para conceder papéis a outros papéis para criar hierarquias de com herança de privilégios.
Casos de uso
Confira a seguir exemplos de casos de uso para controle de acesso detalhado:
- Um sistema de informações de RH com funções de analista de remuneração de vendas, gerenciamento de vendas e analista de RH, cada uma com diferentes níveis de acesso aos dados. Por exemplo, analistas de remuneração e gestão de vendas não devem ver as redes sociais números de segurança.
- Um app de transporte por aplicativo com diferentes contas de serviço e privilégios para passageiros e motoristas.
- Um livro razão que permite operações de
SELECT
eINSERT
, mas nãoUPDATE
e operaçõesDELETE
.
Recursos do Spanner e seus privilégios
Confira a seguir uma lista de recursos do Spanner e o controle de acesso detalhado privilégios que pode conceder a eles.
- Esquemas
- É possível conceder o privilégio
USAGE
em esquemas a papéis específicos do banco de dados. Para um esquema não padrão, os papéis de banco de dados precisam ter o privilégioUSAGE
para acessar os objetos do banco de dados. A verificação de privilégio é semelhante a esta:
Você tem USAGE
no esquema?
Não: recusar o acesso.
Sim. Você também tem os direitos apropriados sobre a tabela?
Não: recusar o acesso.
Sim, você pode acessar a tabela.
- Tabelas
- Você pode conceder os privilégios
SELECT
,INSERT
,UPDATE
eDELETE
em de tabelas para papéis de banco de dados. Para tabelas intercaladas, um privilégio concedido na a tabela mãe não será propagada para a filha. - Colunas
- É possível conceder
SELECT
,INSERT
eUPDATE
a um subconjunto de colunas de uma tabela. Assim, o privilégio é válido apenas para essas colunas.DELETE
não é permitidos no nível da coluna. - Visualizações
- Você pode conceder privilégio a
SELECT
em uma visualização. SomenteSELECT
é aceito para visualizações. O Spanner oferece suporte às visualizações de direitos do invocador e aos visualizações de direitos autorais. Se você criar uma visualização com os direitos do invocador, para consultá-la, o função de banco de dados ou o usuário precisa do privilégioSELECT
na visualização e a PrivilégioSELECT
nos objetos subjacentes referenciados na visualização. Se você criar uma visualização com direitos do definidor, para consultar a visualização, a função do banco de dados ou O usuário só precisa do privilégioSELECT
na visualização. Para mais informações, consulte Visão geral das visualizações. - Alterar streams
- É possível conceder
SELECT
em fluxos de alterações. Você também precisa concederEXECUTE
no função de leitura associada a um fluxo de alterações. Para mais informações, consulte Controle de acesso refinado para fluxos de alterações. - Sequências
- É possível conceder
SELECT
eUPDATE
em sequências. Para mais informações, consulte Controle de acesso refinado para sequências. - Modelos
- É possível conceder
EXECUTE
nos modelos. Para mais informações, consulte Controle de acesso refinado para modelos.
Papéis do sistema de controle de acesso granular
O controle de acesso detalhado tem papéis de sistema predefinidos para cada banco de dados. Assim como os papéis de banco de dados definidos pelo usuário, as funções do sistema podem controlar o acesso aos recursos do Spanner.
Por exemplo, um usuário de controle de acesso detalhado precisa receber o papel spanner_sys_reader
função do sistema para acessar o Key Visualizer e precisa do sistema spanner_info_reader
para ver resultados não filtrados ao consultar as
INFORMATION_SCHEMA
tabelas.
Para mais informações, consulte Papéis refinados do sistema de controle de acesso.
Herança e hierarquias de papéis do banco de dados
É possível criar hierarquias de papéis de banco de dados, em que os papéis filhos herdam os privilégios das funções pai. Os papéis filhos são conhecidos como membros o papel pai.
Por exemplo, considere as seguintes instruções GRANT
:
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
PostgreSQL
GRANT SELECT ON TABLE employees TO pii_access;
GRANT pii_access TO hr_manager, hr_director;
hr_manager
e hr_director
são membros do papel pii_access
e herdam a
Privilégio SELECT
na tabela employees
.
hr_manager
e hr_director
também podem ter membros, e esses membros
herdam o privilégio SELECT
em employees
.
Não há limites para a profundidade das hierarquias de funções, mas o desempenho da consulta pode prejudicar as estruturas hierárquicas de papéis profundas e amplas.
Backup e restauração
Os backups do Spanner incluem definições de papel de banco de dados. Quando um banco de dados é restaurado no backup, os papéis dele são recriadas com os privilégios concedidos. No entanto, as políticas do IAM não fazem parte dos backups de banco de dados. Portanto, é necessário conceder novamente o acesso a papéis de banco de dados aos principais no banco de dados restaurado.
Visão geral da configuração de um controle de acesso detalhado
Confira a seguir as etapas de alto nível para começar proteger os dados com controle de acesso refinado. Para mais detalhes, consulte Configurar o controle de acesso detalhado.
É necessário receber os privilégios roles/spanner.admin
ou
roles/spanner.databaseAdmin
papéis do IAM para executar essas tarefas.
- Criar papéis de banco de dados e conceder privilégios a eles.
- Opcional: crie hierarquias de função com herança concedendo papéis a outras funções.
- Execute estas etapas para cada principal que for um usuário refinado de controle de acesso:
- Ative o controle de acesso detalhado para o principal.
O principal recebe automaticamente o papel de banco de dados
public
, que não tem privilégios por padrão. Essa operação só precisa ser realizada uma vez principal. - Conceder permissões do IAM a um ou mais de banco de dados ao principal.
- Depois que o principal recebe todos os papéis de banco de dados necessários, se o principal tiver papéis do IAM no nível do banco de dados, revogue os papéis no nível do banco de dados para que o controle de acesso do principal seja gerenciado por apenas um método.
- Ative o controle de acesso detalhado para o principal.
O principal recebe automaticamente o papel de banco de dados
Limitações
- As operações de exportação não exportam funções e privilégios do banco de dados e importam operações não podem importá-las. É necessário configurar manualmente as funções e os privilégios depois que a importação for concluída.
- A guia Dados na página TABELA do console do Google Cloud não está disponível para usuários com controle de acesso detalhado.
- As operações
UPDATE
eDELETE
exigemSELECT
em todas as colunas de chave.
A seguir
Consulte os tópicos a seguir para mais informações:
- Acesse um banco de dados com controle de acesso refinado
- Controle de acesso granular para streams de alteração
- Configure um controle de acesso detalhado
- Referência de privilégios de controle de acesso granular
- Papéis do sistema de controle de acesso refinado
- Instruções
GRANT
eREVOKE
do GoogleSQL - Instruções
GRANT
eREVOKE
do PostgreSQL - Controle de acesso granular para sequências
- Controle de acesso granular para modelos