O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a publicação de blog
Gerenciar o controle de acesso no catálogo de permissões federadas do Amazon Redshift
Com as permissões federadas do Amazon Redshift, os usuários podem definir controles de acesso granulares e refinados de qualquer warehouse do Redshift na Conta da AWS. Permissões gerais gerenciam o acesso a tabelas, visualizações e objetos de banco de dados, incluindo permissões com escopo definido, enquanto controles refinados permitem privilégios em nível de coluna e a aplicação de políticas de segurança, como segurança por linha (RLS) e mascaramento dinâmico de dados (DDM).
Concessão/revogação
Com as permissões federadas, você pode definir permissões nos acessos em nível de tabela, como acesso para ler e gravar dados em tabelas e visualizações no banco de dados de permissões federadas do Redshift a partir de qualquer warehouse do Redshift.
GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:sales_analyst"; GRANT INSERT ON "sales_db@finance-catalog".sales_schema.sales_view TO "IAMR:sales_data_engineer"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst"; REVOKE DELETE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst";
As permissões federadas do Amazon Redshift aceitam permissões com escopo para permitir que você conceda ou revogue permissões em todos os objetos de um tipo em um banco de dados ou esquema.
GRANT SELECT FOR TABLES IN SCHEMA "sales_db@finance-catalog".sales_schema TO "IAMR:sales_manager"; REVOKE UPDATE FOR TABLES IN SCHEMA sales_schmea DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";
Você pode definir permissões para conceder/revogar acesso no banco de dados.
GRANT CREATE ON DATABASE "sales_db@finance-catalog" TO "IAMR:sales_admin"; REVOKE TEMP ON DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";
Para acessar mais informações sobre a sintaxe aceita para permissões federadas do Amazon Redshift para concessão, consulte As permissões que você concede no catálogo de permissões federadas do Amazon Redshift..
Controle de acesso refinado
Você pode definir um controle de acesso refinado sobre dados sensíveis usando o controle de acesso em nível de coluna, a segurança por linha (RLS) e o mascaramento dinâmico de dados (DDM) em um banco de dados com permissões federadas do Amazon Redshift. O controle de acesso em nível de coluna permite definir privilégios de acesso mais refinados em nível de coluna em tabelas e visualizações. Superusuários e usuários ou perfis com o perfil sys:secadmin no banco de dados podem criar políticas de RLS e DDM, anexar essas políticas a relações específicas e habilitar o RLS em uma relação.
Controle de acesso em nível de coluna:
Você pode conceder ou revogar privilégios específicos em colunas individuais de uma tabela ou visualização.
GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table(order_number, sales_date, purchase_amount, sale_amount) TO "IAMR:sales_revenue_analyst"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view(order_number, sales_date, purchase_amount, sale_amount) FROM "IAMR:sales_revenue_analyst";
Segurança por linha (RLS):
É possível ativar ou desativar a segurança por linha para uma relação.
ALTER TABLE "sales_db@finance-catalog".sales_schema.sales_table ROW LEVEL SECURITY ON;
É possível criar, alterar ou descartar políticas de RLS no banco de dados.
-- Create an RLS policy CREATE RLS POLICY "sales_db@finance-catalog".policy_america WITH (region VARCHAR(10)) USING (region = 'USA'); -- Alter an RLS policy ALTER RLS POLICY "sales_db@finance-catalog".policy_america USING (region IN ('USA', 'CANADA', 'Mexico')); -- Drop an RLS policy DROP RLS POLICY "sales_db@finance-catalog".policy_america;
Você pode anexar ou desanexar uma política de RLS em uma relação.
-- Attach an RLS policy ATTACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:america_sales_analyst"; -- Detach an RLS policy DETACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_view_america FROM "IAMR:global_sales_analyst";
Mascaramento dinâmico de dados (DDM):
É possível criar, alterar e descartar políticas de mascaramento no banco de dados.
-- Create a masking policy CREATE MASKING POLICY "sales_db@finance-catalog".hash_credit WITH (credit_card varchar(256)) USING (sha2(credit_card + 'testSalt', 256)); -- Alter an masking policy ALTER MASKING POLICY "sales_db@finance-catalog".hash_credit USING (sha2(credit_card + 'otherTestSalt', 256)); -- Drop an masking policy DROP MASKING POLICY "sales_db@finance-catalog".hash_credit;
Você pode anexar ou desanexar uma política de mascaramento em uma relação.
-- Attach a masking policy ATTACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_table (credit_card) TO "IAMR:sales_analyst" PRIORITY 30; -- Detach a masking policy DETACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_view (credit_card) FROM "IAMR:transaction_analyst";
Um superusuário ou usuário com o privilégio sys:secadmin pode visualizar as políticas de RLS e DDM, bem como seus anexos em uma relação com permissões federadas, usando o comando SHOW POLICIES.
nota
-
Funções definidas pelo usuário (UDF) no RLS, as definições de políticas do DDM não são aceitas com as permissões federadas do Amazon Redshift.
-
As funções SQL do Redshift user_is_member_of, role_is_member_of, user_is_member_of_role não são aceitas com permissões federadas do Amazon Redshift.
As permissões que você concede no catálogo de permissões federadas do Amazon Redshift.
Instruções SQL para apoiar o gerenciamento de permissões no banco de dados com a permissão federada do Amazon Redshift em recursos em diferentes níveis de granularidade. A sintaxe aceita referências de tabelas locais (quando conectadas ao banco de dados que contém o recurso ou quando o banco de dados de origem está em use) e referências totalmente qualificadas entre bancos de dados.
Observação
-
usernamepode se referir a um usuário ou perfil do IAM ou usuário do IdC (Centro de Identidade do AWS IAM). -
role_namepode se referir a um grupo do IdC. Grupos do IAM não são aceitos.
Permissões de baixa granularidade
GRANT { SELECT | INSERT | UPDATE | DELETE | TRUNCATE} ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { SELECT | INSERT | UPDATE | DELETE | TRUNCATE } ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }
Privilégios em nível de coluna
GRANT { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }
Permissões com escopo
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASEdatabase@catalogTO {username[ WITH GRANT OPTION ] | ROLErole_name} [, ...] GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMAschema_name[DATABASEdatabase@catalog] | DATABASEdatabase@catalog} TO {username[ WITH GRANT OPTION ] | ROLErole_name} [, ...] REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASEdatabase@catalogFROM {username| ROLErole_name} [, ...] REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMAschema_name[ DATABASEdatabase@catalog] | DATABASEdatabase@catalog} FROM {username| ROLErole_name} [, ...]