SECURITY LABEL

SECURITY LABEL — define ou altera um rótulo de segurança aplicado a um objeto

Sinopse

SECURITY LABEL [ FOR provedor ] ON
{
  TABLE nome_do_objeto |
  COLUMN nome_da_tabela.nome_da_coluna |
  AGGREGATE nome_da_agregação ( assinatura_da_agregação ) |
  DATABASE nome_do_objeto |
  DOMAIN nome_do_objeto |
  EVENT TRIGGER nome_do_objeto |
  FOREIGN TABLE nome_do_objeto |
  FUNCTION nome_da_função
      [ ( [ [ modo_do_argumento ]
            [ nome_do_argumento ]
              tipo_de_dados_do_argumento
            [, ...] ]
         )
      ] |
  LARGE OBJECT oid_do_objeto_grande |
  MATERIALIZED VIEW nome_do_objeto |
  [ PROCEDURAL ] LANGUAGE nome_do_objeto |
  PROCEDURE nome_do_procedimento
      [ ( [ [ modo_do_argumento ]
            [ nome_do_argumento ]
              tipo_de_dados_do_argumento
            [, ...]
          ]
      ) ] |
  PUBLICATION nome_do_objeto |
  ROLE nome_do_objeto |
  ROUTINE nome_da_rotina
      [ ( [ [ modo_do_argumento ]
            [ nome_do_argumento ]
              tipo_de_dados_do_argumento
            [, ...]
          ]
      ) ] |
  SCHEMA nome_do_objeto |
  SEQUENCE nome_do_objeto |
  SUBSCRIPTION nome_do_objeto |
  TABLESPACE nome_do_objeto |
  TYPE nome_do_objeto |
  VIEW nome_do_objeto
} IS 'literal_de_cadeia_de_caracteres'

onde assinatura_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
         [ , ... ]

Descrição

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.

Nota

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.

Parâmetros

nome_do_objeto
nome_da_tabela.nome_da_coluna
nome_da_agregação
nome_da_função
nome_do_procedimento
nome_da_rotina

O nome do objeto a receber rótulos. Nomes de objetos que residem em esquemas (tabelas, funções, etc.) podem ser qualificados pelo esquema.

provedor

O 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_argumento

O tipo de dados do argumento de uma função, procedimento ou agregação.

oid_do_objeto_grande

O OID do objeto grande.

PROCEDURAL

Esta é uma palavra ruído.

literal_de_cadeia_de_caracteres

A 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.

Exemplos

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;

Conformidade

Não existe o comando SECURITY LABEL no padrão SQL.

Veja também

sepgsql, src/test/modules/dummy_seclabel