SECURITY LABEL — define ou altera um rótulo de segurança aplicado a um objeto
SECURITY LABEL [ FORprovedor] ON { TABLEnome_do_objeto| COLUMNnome_da_tabela.nome_da_coluna| AGGREGATEnome_da_agregação(assinatura_da_agregação) | DATABASEnome_do_objeto| DOMAINnome_do_objeto| EVENT TRIGGERnome_do_objeto| FOREIGN TABLEnome_do_objeto| FUNCTIONnome_da_função[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] | LARGE OBJECToid_do_objeto_grande| MATERIALIZED VIEWnome_do_objeto| [ PROCEDURAL ] LANGUAGEnome_do_objeto| PROCEDUREnome_do_procedimento[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] | PUBLICATIONnome_do_objeto| ROLEnome_do_objeto| ROUTINEnome_da_rotina[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] | SCHEMAnome_do_objeto| SEQUENCEnome_do_objeto| SUBSCRIPTIONnome_do_objeto| TABLESPACEnome_do_objeto| TYPEnome_do_objeto| VIEWnome_do_objeto} IS 'literal_de_cadeia_de_caracteres' ondeassinatura_da_agregaçãoé: * | [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[ , ... ] | [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[ , ... ] ] ORDER BY [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[ , ... ]
O comando SECURITY LABEL aplica um rótulo de
segurança a um objeto do banco de dados
[158].
Pode ser associado um número arbitrário de rótulos de segurança,
um por provedor de rótulo, a um determinado objeto do banco de dados.
Provedores de rótulos são módulos carregáveis que se registram usando
a função register_label_provider.
A função register_label_provider não é uma
função SQL; só pode ser chamada a partir do
código C carregado no processo servidor.
O provedor de rótulo determina se um determinado rótulo é válido, e se é permitido atribuir este rótulo a um determinado objeto. O significado de um determinado rótulo também fica a critério do provedor do rótulo. O PostgreSQL não impõe restrições sobre se ou como um provedor de rótulos deve interpretar os rótulos de segurança; apenas fornece um mecanismo para armazená-los. Na prática, esta facilidade destina-se a permitir a integração com sistemas de controle de acesso obrigatório (MAC) baseados em rótulos, como o SELinux. Estes sistemas tomam todas as decisões de controle de acesso com base nos rótulos dos objetos, em vez de conceitos tradicionais de controle de acesso discricionário (DAC), como usuários e grupos.
É necessário ser o dono do objeto de banco de dados para usar o
comando SECURITY LABEL.
nome_do_objetonome_da_tabela.nome_da_colunanome_da_agregaçãonome_da_funçãonome_do_procedimentonome_da_rotinaO nome do objeto a receber rótulos. Nomes de objetos que residem em esquemas (tabelas, funções, etc.) podem ser qualificados pelo esquema.
provedorO nome do provedor ao qual este rótulo deve ser associado. O provedor indicado deve estar carregado, e deve consentir com a operação de rotulagem proposta. Se estiver carregado um único provedor, o nome do provedor poderá ser omitido por questões de brevidade.
modo_do_argumento
O modo do argumento de uma função, procedimento ou agregação:
IN, OUT,
INOUT, ou VARIADIC.
Se omitido, o padrão será IN.
Note que o comando SECURITY LABEL não presta
atenção nos argumentos OUT, porque são
necessários apenas os argumentos de entrada para determinar a
identidade da função.
Portanto, basta listar os argumentos IN,
INOUT e VARIADIC.
nome_do_argumento
O nome do argumento de uma função, procedimento, ou agregação.
Note que o comando SECURITY LABEL não presta
atenção nos nomes dos argumentos, porque são necessários apenas os
tipos de dados dos argumentos para determinar a identidade da função.
tipo_de_dados_do_argumentoO tipo de dados do argumento de uma função, procedimento ou agregação.
oid_do_objeto_grandeO OID do objeto grande.
PROCEDURALEsta é uma palavra ruído.
literal_de_cadeia_de_caracteresA nova definição do rótulo de segurança, escrita como um literal de cadeia de caracteres.
NULL
Deve ser escrito NULL para remover o rótulo
de segurança.
O exemplo a seguir mostra como o rótulo de segurança de uma tabela pode ser definido ou alterado:
SECURITY LABEL FOR selinux ON TABLE mytable
IS 'system_u:object_r:sepgsql_table_t:s0';
Para remover o rótulo de segurança:
SECURITY LABEL FOR selinux ON TABLE mytable IS NULL;
Não existe o comando SECURITY LABEL no padrão
SQL.
src/test/modules/dummy_seclabel