

 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 ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Gerenciar o controle de acesso no catálogo de permissões federadas do Amazon Redshift
<a name="federated-permissions-managing-access"></a>

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
<a name="federated-permissions-managing-access-grant-revoke"></a>

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.](#federated-permissions-managing-access-grant-allowed).

## Controle de acesso refinado
<a name="federated-permissions-managing-access-fgac"></a>

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:
<a name="federated-permissions-managing-access-column"></a>

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):
<a name="federated-permissions-managing-access-row"></a>

É 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):
<a name="federated-permissions-managing-access-ddm"></a>

É 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](r_SHOW_POLICIES.md).

**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\$1is\$1member\$1of, role\$1is\$1member\$1of, user\$1is\$1member\$1of\$1role 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.
<a name="federated-permissions-managing-access-grant-allowed"></a>

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**
+ *username* pode se referir a um usuário ou perfil do IAM ou usuário do IdC (Centro de Identidade do AWS IAM).
+ *role\$1name* pode se referir a um grupo do IdC. Grupos do IAM não são aceitos.

#### Permissões de baixa granularidade
<a name="federated-permissions-managing-access-grant-allowed-coarse"></a>

```
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
<a name="federated-permissions-managing-access-grant-allowed-column"></a>

```
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
<a name="federated-permissions-managing-access-scoped"></a>

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }  
FOR SCHEMAS IN  
DATABASE database@catalog   
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]  

GRANT   
{ { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } }  
FOR TABLES IN  
{ SCHEMA schema_name [DATABASE database@catalog ] | DATABASE database@catalog }  
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]  

REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }   
FOR SCHEMAS IN   
DATABASE database@catalog   
FROM { username | ROLE role_name } [, ...]   

REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } }   
FOR TABLES IN   
{ SCHEMA schema_name [ DATABASE database@catalog ] | DATABASE database@catalog }   
FROM { username | ROLE role_name } [, ...]
```