sys.database_permissions (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)ponto de extremidade de análise SQL no Microsoft FabricWarehouse no Microsoft Fabricbanco de dados SQL no Microsoft Fabric
Retorna uma linha para cada permissão ou permissão de exceção de coluna no banco de dados. Para colunas, há uma linha para cada permissão que é diferente da permissão de nível de objeto correspondente. Se a permissão de coluna for igual à permissão de objeto correspondente, não haverá linha para ela e a permissão aplicada será a do objeto.
Importante
As permissões no nível da coluna substituem as permissões no nível do objeto na mesma entidade.
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
classe | minúsculo | Identifica a classe na qual existe permissão. Para obter mais informações, consulte sys.securable_classes (Transact-SQL). 0 = Base de dados 1 = Objeto ou Coluna 3 = Esquema 4 = Principal da Base de Dados 5 = Assembly - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 6 = Tipo 10 = Coleção de esquema XML - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 15 = Tipo de mensagem - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 16 = Contrato de Serviço - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 17 = Serviço - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 18 = Vinculação de serviço remoto - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 19 = Route - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 23 =Full-Text Catalog - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 24 = Chave simétrica - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 25 = Certificado - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 26 = Chave assimétrica - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 29 = Fulltext Stoplist - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 31 = Lista de propriedades de pesquisa - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. 32 = Credencial com escopo de banco de dados - Aplica-se a: SQL Server 2016 (13.x) e versões posteriores. 34 = Idioma Externo - Aplica-se a: SQL Server 2019 (15.x) e versões posteriores. |
class_desc | nvarchar(60) | Descrição da classe na qual existe permissão. BASE DE DADOS OBJECT_OR_COLUMN ESQUEMA DATABASE_PRINCIPAL MONTAGEM TIPO XML_SCHEMA_COLLECTION MESSAGE_TYPE SERVICE_CONTRACT SERVIÇO REMOTE_SERVICE_BINDING PERCURSO FULLTEXT_CATALOG SYMMETRIC_KEYS CERTIDÃO ASYMMETRIC_KEY LISTA DE TÓPICOS DE TEXTO COMPLETO PESQUISAR LISTA DE PROPRIEDADES CREDENCIAL COM ESCOPO DE BANCO DE DADOS LÍNGUA EXTERNA |
major_id | int | ID da coisa sobre a qual existe permissão, interpretada de acordo com a classe. Normalmente, o major_id simplesmente o tipo de ID que se aplica ao que a classe representa. 0 = A própria base de dados >0 = Object-IDs para objetos de usuário <0 = Object-IDs para objetos do sistema |
minor_id | int | Secondary-ID de coisa sobre a qual existe permissão, interpretada de acordo com a classe. Muitas vezes, o minor_id é zero, porque não há nenhuma subcategoria disponível para a classe de objeto. Caso contrário, é o Column-ID de uma tabela. |
grantee_principal_id | int | ID da entidade de banco de dados à qual as permissões são concedidas. |
grantor_principal_id | int | ID principal do banco de dados do concedente dessas permissões. |
tipo | char(4) | Tipo de permissão de banco de dados. Para obter uma lista de tipos de permissão, consulte a tabela a seguir. |
permission_name | nvarchar(128) | Nome da permissão. |
estado | char(1) | Estado de permissão: D = Negar R = Revogar G = Subvenção W = Subvenção com opção de subvenção |
state_desc | nvarchar(60) | Descrição do estado de permissão: NEGAR REVOGAÇÃO SUBVENÇÃO GRANT_WITH_GRANT_OPTION |
Permissões de banco de dados
Os seguintes tipos de permissões são possíveis.
Tipo de permissão | Nome da permissão | Aplica-se a valores protegíveis |
---|---|---|
AADS | ALTERAR QUALQUER SESSÃO DE EVENTO DE BANCO DE DADOS | BASE DE DADOS |
AAMK | ALTERE QUALQUER MÁSCARA | BASE DE DADOS |
AEDS | ALTERAR QUALQUER FONTE DE DADOS EXTERNA | BASE DE DADOS |
FEPA | ALTERAR QUALQUER FORMATO DE ARQUIVO EXTERNO | BASE DE DADOS |
AL | ALTER | FUNÇÃO DO APLICATIVO, MONTAGEM, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO DE TEXTO COMPLETO, TIPO DE MENSAGEM, OBJETO, VINCULAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, USUÁRIO, COLEÇÃO DE ESQUEMA XML |
ALAK | ALTERAR QUALQUER CHAVE ASSIMÉTRICA | BASE DE DADOS |
ALAR | ALTERAR QUALQUER FUNÇÃO DE APLICATIVO | BASE DE DADOS |
INFELIZMENTE | ALTERAR QUALQUER MONTAGEM | BASE DE DADOS |
ALCF | ALTERAR QUALQUER CERTIFICADO | BASE DE DADOS |
ALDS | ALTERAR QUALQUER ESPAÇO DE DADOS | BASE DE DADOS |
ALED | ALTERAR QUALQUER NOTIFICAÇÃO DE EVENTO DO BANCO DE DADOS | BASE DE DADOS |
ALFT | ALTERAR QUALQUER CATÁLOGO DE TEXTO COMPLETO | BASE DE DADOS |
ALMT | ALTERAR QUALQUER TIPO DE MENSAGEM | BASE DE DADOS |
ALRL | ALTERAR QUALQUER FUNÇÃO | BASE DE DADOS |
ALRT | ALTERAR QUALQUER ROTA | BASE DE DADOS |
ALSB | ALTERAR QUALQUER LIGAÇÃO DE SERVIÇO REMOTO | BASE DE DADOS |
ALSC | ALTERAR QUALQUER CONTRATO | BASE DE DADOS |
ALSK | ALTERAR QUALQUER CHAVE SIMÉTRICA | BASE DE DADOS |
ALSM | ALTERAR QUALQUER ESQUEMA | BASE DE DADOS |
ALSV | ALTERAR QUALQUER SERVIÇO | BASE DE DADOS |
ALTG | ALTERAR QUALQUER GATILHO DDL DE BANCO DE DADOS | BASE DE DADOS |
ALUS | ALTERAR QUALQUER UTILIZADOR | BASE DE DADOS |
AUTH | AUTENTICAR | BASE DE DADOS |
BADB | BANCO DE DADOS DE BACKUP | BASE DE DADOS |
BALO | BACKUP LOG | BASE DE DADOS |
CL | CONTROLO | FUNÇÃO DO APLICATIVO, MONTAGEM, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO DE TEXTO COMPLETO, TIPO DE MENSAGEM, OBJETO, VINCULAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, TIPO, USUÁRIO, COLEÇÃO DE ESQUEMA XML |
CO | CONECTE-SE | BASE DE DADOS |
CORP | CONECTAR REPLICAÇÃO | BASE DE DADOS |
CP | PONTO DE VERIFICAÇÃO | BASE DE DADOS |
CRAG | CRIAR AGREGAÇÃO | BASE DE DADOS |
CARANGUEJO | CRIAR CHAVE ASSIMÉTRICA | BASE DE DADOS |
CRAS | CRIAR ASSEMBLY | BASE DE DADOS |
CRCF | CRIAR CERTIFICADO | BASE DE DADOS |
CRDB | CRIAR BASE DE DADOS | BASE DE DADOS |
CRDF | CRIAR PADRÃO | BASE DE DADOS |
CRED | CRIAR NOTIFICAÇÃO DE EVENTO DDL DO BANCO DE DADOS | BASE DE DADOS |
CRFN | CRIAR FUNÇÃO | BASE DE DADOS |
CRFT | CRIAR CATÁLOGO DE TEXTO COMPLETO | BASE DE DADOS |
CRMT | CRIAR TIPO DE MENSAGEM | BASE DE DADOS |
CRPR | CRIAR PROCEDIMENTO | BASE DE DADOS |
CRQU | CRIAR FILA | BASE DE DADOS |
CRRL | CRIAR FUNÇÃO | BASE DE DADOS |
CRRT | CRIAR ROTA | BASE DE DADOS |
CRRU | CRIAR REGRA | BASE DE DADOS |
CRSB | CRIAR VINCULAÇÃO DE SERVIÇO REMOTO | BASE DE DADOS |
CRSC | CRIAR CONTRATO | BASE DE DADOS |
CRSK | CRIAR CHAVE SIMÉTRICA | BASE DE DADOS |
CRSM | CRIAR ESQUEMA | BASE DE DADOS |
CRSN | CRIAR SINÓNIMO | BASE DE DADOS |
CRSO |
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores. CRIAR SEQUÊNCIA |
BASE DE DADOS |
CRSV | CRIAR SERVIÇO | BASE DE DADOS |
CRTB | CRIAR TABELA | BASE DE DADOS |
CRTY | CRIAR TIPO | BASE DE DADOS |
CRVW | CRIAR VISTA | BASE DE DADOS |
CRXS |
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores. CRIAR COLEÇÃO DE ESQUEMA XML |
BASE DE DADOS |
DABO | ADMINISTRAR OPERAÇÕES EM MASSA DO BANCO DE DADOS | BASE DE DADOS |
DL | SUPRIMIR | BANCO DE DADOS, OBJETO, ESQUEMA |
EAES | EXECUTE QUALQUER SCRIPT EXTERNO | BASE DE DADOS |
EX | EXECUTAR | ASSEMBLY, BANCO DE DADOS, OBJETO, ESQUEMA, TIPO, COLEÇÃO DE ESQUEMA XML |
IM | PERSONIFICAR | UTILIZADOR |
EM | INSERIR | BANCO DE DADOS, OBJETO, ESQUEMA |
CR | RECEBER | OBJETO |
RF | REFERÊNCIAS | ASSEMBLY, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO DE TEXTO COMPLETO, TIPO DE MENSAGEM, OBJETO, ESQUEMA, CHAVE SIMÉTRICA, TIPO, COLEÇÃO DE ESQUEMA XML |
SL | SELECIONAR | BANCO DE DADOS, OBJETO, ESQUEMA |
SN | ENVIAR | SERVIÇO |
SPLN | SHOWPLAN | BASE DE DADOS |
SUQN | SUBSCREVER NOTIFICAÇÕES DE CONSULTA | BASE DE DADOS |
PARA | APROPRIE-SE | ASSEMBLY, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO DE TEXTO COMPLETO, TIPO DE MENSAGEM, OBJETO, VINCULAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, TIPO, COLEÇÃO DE ESQUEMA XML |
ATÉ | ATUALIZAÇÃO | BANCO DE DADOS, OBJETO, ESQUEMA |
VW | VER DEFINIÇÃO | FUNÇÃO DO APLICATIVO, MONTAGEM, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO DE TEXTO COMPLETO, TIPO DE MENSAGEM, OBJETO, VINCULAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, TIPO, USUÁRIO, COLEÇÃO DE ESQUEMA XML |
VWCK | EXIBIR QUALQUER DEFINIÇÃO DE CHAVE DE CRIPTOGRAFIA DE COLUNA | BASE DE DADOS |
VWCM | VER QUALQUER DEFINIÇÃO DE CHAVE MESTRA DE COLUNA | BASE DE DADOS |
VWCT | VER CONTROLO DE ALTERAÇÕES | TABELA, ESQUEMA |
VWDS | EXIBIR ESTADO DO BANCO DE DADOS | BASE DE DADOS |
REVOGAR e permissões de exceção de coluna
Na maioria dos casos, o comando REVOKE removerá a entrada GRANT ou DENY do sys.database_permissions.
No entanto, é possível CONCEDER ou NEGAR permissões em um objeto e, em seguida, REVOGAR essa permissão em uma coluna. Essa permissão de exceção de coluna aparecerá como REVOKE no sys.database_permissions. Considere o seguinte exemplo:
GRANT SELECT ON Person.Person TO [Sales];
REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];
Essas permissões aparecerão em sys.database_permissions como um GRANT (na tabela) e um REVOKE (na coluna).
Importante
REVOKE é diferente de DENY, pois a entidade de Sales
ainda pode ter acesso à coluna por meio de outras permissões. Se tivéssemos negado permissões em vez de revogá-las, Sales
não seria capaz de visualizar o conteúdo da coluna porque DENY sempre substitui GRANT.
Permissões
Qualquer usuário pode ver suas próprias permissões. Para ver permissões para outros usuários, requer VIEW DEFINITION, ALTER ANY USER, ou qualquer permissão em um usuário. Para ver as funções definidas pelo usuário, é necessário ALTERAR QUALQUER FUNÇÃO ou associação à função (como pública).
A visibilidade dos metadados em exibições de catálogo é limitada aos protegíveis que um usuário possui ou nos quais o usuário recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.
Exemplos
Um. Listar todas as permissões das entidades de banco de dados
A consulta a seguir lista as permissões explicitamente concedidas ou negadas às entidades de banco de dados.
Importante
As permissões de funções de banco de dados fixas não aparecem no sys.database_permissions
. Portanto, as entidades de banco de dados podem ter permissões adicionais não listadas aqui.
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;
B. Listar permissões em objetos de esquema em um banco de dados
A consulta a seguir une sys.database_principals e sys.database_permissions
para sys.objects e sys.schemas para listar permissões concedidas ou negadas a objetos de esquema específicos.
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id;
C. Listar permissões para um objeto específico
Você pode usar o exemplo anterior para consultar permissões específicas para um único objeto de banco de dados.
Por exemplo, considere as seguintes permissões granulares concedidas a um usuário de banco de dados test
no banco de dados de exemplo AdventureWorksDW2022
:
GRANT SELECT ON dbo.vAssocSeqOrders TO [test];
Encontre as permissões granulares atribuídas a dbo.vAssocSeqOrders
:
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE o.name = 'vAssocSeqOrders'
AND s.name = 'dbo';
Devolve a saída:
principal_id name type_desc authentication_type_desc state_desc permission_name ObjectName
5 test SQL_USER INSTANCE GRANT SELECT dbo.vAssocSeqOrders
Ver também
- Protegíveis
- Hierarquia de permissões (Mecanismo de Banco de Dados)
- Visualizações do catálogo de segurança (Transact-SQL)
- Catalog Views (Transact-SQL)