SECURITY LABEL — define o cambia una etiqueta de seguridad aplicada a un objeto
SECURITY LABEL [ FORprovider] ON { TABLEobject_name| COLUMNtable_name.column_name| AGGREGATEaggregate_name(aggregate_signature) | DATABASEobject_name| DOMAINobject_name| EVENT TRIGGERobject_name| FOREIGN TABLEobject_name| FUNCTIONfunction_name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] | LARGE OBJECTlarge_object_oid| MATERIALIZED VIEWobject_name| [ PROCEDURAL ] LANGUAGEobject_name| PROCEDUREprocedure_name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] | PUBLICATIONobject_name| ROLEobject_name| ROUTINEroutine_name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] | SCHEMAobject_name| SEQUENCEobject_name| SUBSCRIPTIONobject_name| TABLESPACEobject_name| TYPEobject_name| VIEWobject_name} IS {string_literal| NULL } dondeaggregate_signaturees: * | [argmode] [argname]argtype[ , ... ] | [ [argmode] [argname]argtype[ , ... ] ] ORDER BY [argmode] [argname]argtype[ , ... ]
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.
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.
object_nametable_name.column_nameaggregate_namefunction_nameprocedure_nameroutine_nameEl 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.
providerEl 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.
argtypeEl tipo de datos del argumento de una función, procedimiento o agregado.
large_object_oidEl OID del objeto grande (large object).
PROCEDURALEsta es una palabra de adorno.
string_literalLa nueva configuración de la etiqueta de seguridad, escrita como una cadena literal.
NULL
Escribe NULL para eliminar la etiqueta de seguridad.
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;
No existe el comando SECURITY LABEL en el estándar SQL.
src/test/modules/dummy_seclabel