他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

SECURITY LABEL

名前

SECURITY LABEL -- オブジェクトに適用するセキュリティラベルを定義または変更する

概要

SECURITY LABEL [ FOR provider ] ON
{
  TABLE object_name |
  COLUMN table_name.column_name |
  AGGREGATE agg_name (agg_type [, ...] ) |
  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 |
  ROLE object_name |
  SCHEMA object_name |
  SEQUENCE object_name |
  TABLESPACE object_name |
  TYPE object_name |
  VIEW object_name
} IS 'label'

説明

SECURITY LABELはセキュリティラベルをデータベースオブジェクトに適用します。 ラベルプロバイダごとに1つの、任意の数のセキュリティラベルを指定したデータベースオブジェクトに関連付けることができます。 ラベルプロバイダは、register_label_provider関数を使用して自身を登録する、ロード可能なモジュールです。

注意: register_label_providerはSQL関数ではありません。 バックエンドにロードされたCコードからのみ呼び出すことができます。

ラベルプロバイダは、指定されたラベルが有効かどうか、および指定されたオブジェクトにラベルを割り当てることが許されているかどうかを決定します。 また、ラベルプロバイダは指定されたラベルの意味の決定権を持ちます。 PostgreSQLは、ラベルプロバイダがセキュリティラベルを解釈するかしないか、どのように解釈するかに関して制限を持ちません。 単にこれらを格納するための機構を提供するだけです。 実際には、この機能はSE-Linuxなどのラベルベースの強制アクセス制御(MAC)システムと統合できるようにすることを意図したものです。 こうしたシステムにより、すべてのアクセス制御の決定は、ユーザとグループなどの伝統的な任意アクセス制御(DAC)という考えではなく、オブジェクトラベルに基づいて行われます。

パラメータ

object_name
table_name.column_name
agg_name
function_name

ラベル付けされるオブジェクトの名前です。 テーブル、集約、ドメイン、外部テーブル、関数、シーケンス、型、ビューの名前はスキーマで修飾可能です。

provider

このラベルが関連するプロバイダの名前です。 指定されたプロバイダはロードされていなければならず、かつ、提供されるラベル付け操作と一致しなければなりません。 プロバイダが1つだけロードされていた場合、プロバイダの名前を省略して簡略化することができます。

arg_type

集約関数が操作する入力データ型です。 引数を持たない集約関数を参照する場合は入力データ型のリストには*と記述してください。

argmode

関数引数のモードです。 INOUTINOUTVARIADICのいずれかです。 省略された場合のデフォルトはINです。 入力引数のみが関数の識別を決定するために必要ですので、実際にはSECURITY LABEL ON FUNCTIONOUTをまったく考慮しないことに注意してください。 このためININOUTVARIADICのリストで十分です。

argname

関数引数の名前です。 引数のデータ型のみが関数の識別を決定するために必要ですので、実際にはSECURITY LABEL ON FUNCTIONは引数名をまったく考慮しないことに注意してください。

argtype

関数引数があればそのデータ型です(スキーマ修飾可)。

large_object_oid

ラージオブジェクトのOIDです。

PROCEDURAL

これは意味がない単語です。

label

文字列リテラルで記述された新しいセキュリティラベルです。 セキュリティラベルを削除するためにはNULLと記述します。

以下の例はテーブルのセキュリティラベルを変更する方法を示します。

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

互換性

標準SQLにはSECURITY LABELコマンドはありません。

関連項目

sepgsql, dummy_seclabel