PostgreSQL 9.1.1文書
前のページ | 巻戻し |  | 早送り | 次のページ

# SECURITY LABEL

## 名前

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

## 概要

    SECURITY LABEL [ FOR provider ] ON
    {
      TABLE object_name |
      COLUMN table_name.column_name |
      AGGREGATE agg_name (agg_type [, ...] ) |
      DOMAIN object_name |
      FOREIGN TABLE object_name
      FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |
      LARGE OBJECT large_object_oid |
      [ PROCEDURAL ] LANGUAGE object_name |
      SCHEMA object_name |
      SEQUENCE object_name |
      TYPE object_name |
      VIEW object_name
    } IS 'label'

## 説明

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

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

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

## パラメータ

`object_name`
`table_name.column_name`
`agg_name`
`function_name`

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

`provider`

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

`arg_type`

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

`argmode`

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

`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

前のページ | ホーム | 次のページ
SAVEPOINT | 上に戻る | SELECT