Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Applies to: SQL Server 2016 (13.x) e versões posteriores
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
SQL analytics ponto de extremidade em Microsoft Fabric
Warehouse no banco de dados Microsoft Fabric
SQL em Microsoft Fabric
Cria uma política de segurança para segurança em nível de no sql Mecanismo de Banco de Dados.
A segurança em nível de linha em Fabric Data Warehouse opera de forma semelhante a outros produtos do SQL Mecanismo de Banco de Dados. Para obter mais informações e exemplos de segurança em nível de linha no Fabric Data Warehouse ou no ponto de extremidade de análise do SQL, consulte Segurança no nível derow no Fabric data warehousing.
Transact-SQL convenções de sintaxe
Syntax
CREATE SECURITY POLICY [schema_name. ] security_policy_name
{ ADD [ FILTER | BLOCK ] } PREDICATE tvf_schema_name.security_predicate_function_name
( { column_name | expression } [ , ...n] ) ON table_schema_name. table_name
[ <block_dml_operation> ] , [ , ...n]
[ WITH ( STATE = { ON | OFF } [,] [ SCHEMABINDING = { ON | OFF } ] ) ]
[ NOT FOR REPLICATION ]
[;]
<block_dml_operation>
[ { AFTER { INSERT | UPDATE } }
| { BEFORE { UPDATE | DELETE } } ]
Arguments
security_policy_name
O nome da política de segurança. Os nomes das políticas de segurança devem seguir as regras para identificadores e ser exclusivos no banco de dados e em seu esquema.
schema_name
O nome do esquema ao qual a política de segurança pertence. schema_name é obrigatório devido à associação de esquema.
[ FILTRO | BLOQUEIO ]
O tipo de predicado de segurança para a função a ser associada à tabela de destino.
- Predicados
FILTERfiltram silenciosamente as linhas que estão disponíveis para operações de leitura. - Predicados
BLOCKbloqueiam explicitamente as operações de gravação que violam a função de predicado.
tvf_schema_name.security_predicate_function_name
A função de valor de tabela embutida que será usada como um predicado e que será imposta em consultas em uma tabela de destino. No máximo um predicado de segurança pode ser definido para uma determinada operação DML em uma tabela específica. A função de valor de tabela em linha deve ter sido criada usando a opção SCHEMABINDING.
{ column_name | Expressão }
Um nome da coluna ou expressão usada como um parâmetro para a função de predicado de segurança. Qualquer coluna na tabela de destino pode ser usada. Uma expressão só pode incluir constantes, funções escalares internas, operadores e colunas da tabela de destino. Um nome de coluna ou expressão precisa ser especificado para cada parâmetro da função.
table_schema_name.table_name
A tabela de destino à qual o predicado de segurança será aplicado. Várias políticas de segurança desabilitadas podem ser direcionadas a uma operação DML específica, mas apenas uma pode ser habilitada em determinado momento.
block_dml_operation
A operação DML específica para à qual o predicado de bloqueio será aplicado.
AFTER especifica que o predicado será avaliado nos valores das linhas após a execução da operação DML (INSERT ou UPDATE).
BEFORE especifica que o predicado será avaliado nos valores das linhas antes que a operação DML seja executada (UPDATE ou DELETE). Se nenhuma operação for especificada, o predicado será aplicado a todas as operações.
[ ESTADO = { ON | DESLIGADO } ]
Habilita ou desabilita a política de segurança ao impor seus predicados de segurança nas tabelas de destino. Se não especificado, a política de segurança que está sendo criada é habilitada.
[ SCHEMABINDING = { ON | DESLIGADO } ]
Indica se todas as funções de predicado na política devem ser criadas com a opção SCHEMABINDING. Por padrão, essa configuração é ON, e todas as funções devem ser criadas com SCHEMABINDING.
NÃO PARA REPLICAÇÃO
Indica que a política de segurança não deve ser executada quando um agente de replicação modifica o objeto de destino. Para obter mais informações, consulte Controle o comportamento de gatilhos e restrições durante a sincronização (programação de Transact-SQL de replicação).
[ table_schema_name. ] table_name
A tabela de destino à qual o predicado de segurança será aplicado. Várias políticas de segurança desabilitadas podem direcionar uma única tabela, mas apenas uma pode ser habilitada em um determinado momento.
Remarks
Ao usar funções de predicado com tabelas com otimização de memória, você deve incluir SCHEMABINDING e usar a dica de compilação WITH NATIVE_COMPILATION.
Os predicados de bloqueio são avaliados depois que a operação DML correspondente é executada. Portanto, há o perigo de que uma READ UNCOMMITTED consulta possa ver valores transitórios que serão revertidos.
Permissions
Requer a ALTER ANY SECURITY POLICY permissão e ALTER a permissão no esquema.
Além disso, as seguintes permissões são necessárias para cada predicado que é adicionado:
Permissões
SELECTeREFERENCESna função que está sendo usada como um predicado.Permissão
REFERENCESna tabela de destino associada à política.Permissão
REFERENCESem cada coluna da tabela de destino usada como argumentos.
Examples
Os exemplos a seguir demonstram o uso da sintaxe CREATE SECURITY POLICY. Para obter um exemplo de um cenário de política de segurança completo, consulte Segurança em nível de linha.
A. Criar uma política de segurança
A sintaxe a seguir cria uma política de segurança com um predicado de filtro para a tabela dbo.Customer e deixa a política de segurança desabilitada.
CREATE SECURITY POLICY [FederatedSecurityPolicy]
ADD FILTER PREDICATE [rls].[fn_securitypredicate]([CustomerId])
ON [dbo].[Customer];
B. Criar uma política que afeta várias tabelas
A sintaxe a seguir cria uma política de segurança com três predicados de filtro em três tabelas diferentes e habilita a política de segurança.
CREATE SECURITY POLICY [FederatedSecurityPolicy]
ADD FILTER PREDICATE [rls].[fn_securitypredicate1]([CustomerId])
ON [dbo].[Customer],
ADD FILTER PREDICATE [rls].[fn_securitypredicate1]([VendorId])
ON [dbo].[ Vendor],
ADD FILTER PREDICATE [rls].[fn_securitypredicate2]([WingId])
ON [dbo].[Patient]
WITH (STATE = ON);
C. Criar uma política com vários tipos de predicados de segurança
Adição de um predicado de filtro e de um predicado de bloco à tabela dbo.Sales.
CREATE SECURITY POLICY rls.SecPol
ADD FILTER PREDICATE rls.tenantAccessPredicate(TenantId) ON dbo.Sales,
ADD BLOCK PREDICATE rls.tenantAccessPredicate(TenantId) ON dbo.Sales AFTER INSERT;