SECURITY LABEL

SECURITY LABEL — define o cambia una etiqueta de seguridad aplicada a un objeto

Synopsis

SECURITY LABEL [ FOR provider ] ON
{
  TABLE object_name |
  COLUMN table_name.column_name |
  AGGREGATE aggregate_name ( aggregate_signature ) |
  DATABASE object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  LARGE OBJECT large_object_oid |
  MATERIALIZED VIEW object_name |
  [ PROCEDURAL ] LANGUAGE object_name |
  PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  PUBLICATION object_name |
  ROLE object_name |
  ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  SCHEMA object_name |
  SEQUENCE object_name |
  SUBSCRIPTION object_name |
  TABLESPACE object_name |
  TYPE object_name |
  VIEW object_name
} IS { string_literal | NULL }

donde aggregate_signature es:

* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

Descripción

SECURITY LABEL aplica una etiqueta de seguridad a un objeto de base de datos. Se puede asociar un número arbitrario de etiquetas de seguridad, una por proveedor de etiquetas, a un objeto de base de datos dado. Los proveedores de etiquetas son módulos cargables que se registran a sí mismos mediante la función register_label_provider.

Note

register_label_provider no es una función SQL; solo se puede llamar desde código C cargado en el backend.

El proveedor de etiquetas determina si una etiqueta dada es válida y si es permisible asignar esa etiqueta a un objeto dado. El significado de una etiqueta dada también queda a discreción del proveedor de etiquetas. PostgreSQL no impone restricciones sobre si un proveedor de etiquetas debe interpretar las etiquetas de seguridad o cómo debe hacerlo; simplemente proporciona un mecanismo para almacenarlas. En la práctica, esta facilidad está diseñada para permitir la integración con sistemas de control de acceso obligatorio (MAC) basados en etiquetas, como SELinux. Dichos sistemas toman todas las decisiones de control de acceso basándose en las etiquetas de los objetos, en lugar de los conceptos tradicionales de control de acceso discrecional (DAC), como usuarios y grupos.

Debes ser propietario del objeto de base de datos para usar SECURITY LABEL.

Parámetros

object_name
table_name.column_name
aggregate_name
function_name
procedure_name
routine_name

El nombre del objeto que se va a etiquetar. Los nombres de los objetos que residen en esquemas (tablas, funciones, etc.) pueden estar calificados por el esquema.

provider

El nombre del proveedor con el que se asociará esta etiqueta. El proveedor nombrado debe estar cargado y debe consentir la operación de etiquetado propuesta. Si se ha cargado exactamente un proveedor, el nombre del proveedor se puede omitir para abreviar.

argmode

El modo del argumento de una función, procedimiento o agregado: IN, OUT, INOUT o VARIADIC. Si se omite, el valor predeterminado es IN. Ten en cuenta que SECURITY LABEL en realidad no presta atención a los argumentos OUT, ya que solo se necesitan los argumentos de entrada para determinar la identidad de la función. Por lo tanto, es suficiente enumerar los argumentos IN, INOUT y VARIADIC.

argname

El nombre del argumento de una función, procedimiento o agregado. Ten en cuenta que SECURITY LABEL en realidad no presta atención a los nombres de los argumentos, ya que solo se necesitan los tipos de datos de los argumentos para determinar la identidad de la función.

argtype

El tipo de datos del argumento de una función, procedimiento o agregado.

large_object_oid

El OID del objeto grande (large object).

PROCEDURAL

Esta es una palabra de adorno.

string_literal

La nueva configuración de la etiqueta de seguridad, escrita como una cadena literal.

NULL

Escribe NULL para eliminar la etiqueta de seguridad.

Ejemplos

El siguiente ejemplo muestra cómo se puede establecer o cambiar la etiqueta de seguridad de una tabla:

SECURITY LABEL FOR selinux ON TABLE mytable IS 'system_u:object_r:sepgsql_table_t:s0';

Para eliminar la etiqueta:

SECURITY LABEL FOR selinux ON TABLE mytable IS NULL;

Compatibilidad

No existe el comando SECURITY LABEL en el estándar SQL.

Consulte también

sepgsql, src/test/modules/dummy_seclabel