ALTER TRUSTED CONTEXT ステートメント
ALTER TRUSTED CONTEXT ステートメントは、現行サーバーでトラステッド・コンテキストの定義を変更します。
重要: DATA_ENCRYPT 認証タイプは非推奨になっており、将来のリリースで除去される可能性があります。 クライアントと Db2® データベースの間で転送中のデータを暗号化するには、 Transport Layer Security (TLS)の Db2 データベース・システム・サポートを使用することをお勧めします。 詳しくは、「 転送中のデータの暗号化」を参照してください。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。
構文
Notes:
- 1 Each of the ATTRIBUTES, DEFAULT ROLE, ENABLE, and WITH USE clauses can be specified at most once (SQLSTATE 42614).
- 2 Each attribute name and corresponding value must be unique (SQLSTATE 4274D).
- 3 ENCRYPTION cannot be specified more than once (SQLSTATE 42614); however, WITH ENCRYPTION can be specified for each ADDRESS that is specified.
説明
- コンテキスト名
- 変更するトラステッド・コンテキストを指定します。 これは、1 部構成の名前です。 これは、SQL ID です (通常 ID または区切り ID)。 context-name は現行のサーバーに存在するトラステッド・コンテキストを識別するものでなければなりません (SQLSTATE 42704)。
- ALTER
- トラステッド・コンテキストのオプションと属性を変更します。
- SYSTEM AUTHID
- コンテキストがシステム許可 ID authorization-name によって確立される接続であることを指定します。これを既存のトラステッド・コンテキストと関連付けてはなりません (SQLSTATE 428GL)。 これにステートメントの許可 ID を指定することはできません (SQLSTATE 42502)。
- ATTRIBUTES (...)
- 変更する 1 つ以上の接続トラスト属性のリスト (これにトラステッド・コンテキストが定義される) を指定します。 指定された属性の既存の値は新規値で置き換えられます。 属性が現在トラステッド・コンテキスト定義の一部となっていない場合にはエラーが戻されます (SQLSTATE 4274C)。 指定されない属性はその以前の値を保持します。
- ADDRESS アドレス値
- クライアントがデータベース・サーバーと通信するために使用する実際の通信アドレスを指定します。 サポートされるプロトコルは TCP/IP のみです。 指定されたトラステッド・コンテキストの以前の ADDRESS 値は除去されます。 ADDRESS 属性は複数回指定できますが、address-value の対はそれぞれ属性のセットで固有でなければなりません (SQLSTATE 4274D)。
トラステッド接続を確立するときにトラステッド・コンテキストの ADDRESS 属性に対して複数の値が定義されている場合、候補となる接続によって使用されるアドレスがトラステッド・コンテキストの ADDRESS 属性の定義値のいずれかと一致していると、その接続はこの属性と一致しているとみなされます。
- アドレス値
- ADDRESS トラスト属性と関連付けられる値を含むストリング定数を指定します。 address-value は、IPv4 アドレス、IPv6 アドレス、またはセキュア・ドメイン・ネームでなければなりません。
- IPv4 アドレスの先頭にスペースが含まれていてはなりません。 このアドレスは小数点付き 10 進数アドレスとして表されます。 例えば IPv4 アドレスは 9.112.46.111 のようになります。 値 'localhost' またはそれに相当する表現 '127.0.0.1' は、一致という結果になりません。 代わりにホストの実 IPv4 アドレスを指定する必要があります。
- IPv6 アドレスの先頭にスペースが含まれていてはなりません。 このアドレスはコロン区切りの 16 進アドレスとして表されます。 例えば IPv6 アドレスは 2001:0DB8:0000:0000:0008:0800:200C:417A のようになります。 IPv4 がマップされた IPv6 アドレス (例えば ::ffff:192.0.2.128) は、一致という結果になりません。 同じように、'localhost' またはその IPv6 短表現 '::1' も一致という結果になりません。
- ドメイン・ネームはドメイン・ネーム・サーバーで IP アドレスに変換されます。 結果として生成される IPv4 または IPv6 アドレスはこのサーバーで決定されます。 例えばドメイン・ネームは corona.torolab.ibm.com のようになります。 ドメイン・ネームが IP アドレスに変換されたとき、この変換の結果が 1 つ以上の IP アドレスのセットになる場合があります。 その場合、接続開始時の IP アドレスがドメイン名変換後の IP アドレスのいずれかと一致すると、着信接続はトラステッド・コンテキスト・オブジェクトの ADDRESS 属性と一致しているとみなされます。 トラステッド・コンテキスト・オブジェクトを作成するとき、特に動的ホスト構成プロトコル (DHCP) 環境では、静的 IP アドレスの代わりにドメイン・ネーム値を ADDRESS 属性に提供することをお勧めします。 DHCP ではデバイスがネットワークと接続するたびに IP アドレスが変わります。 そのため、トラステッド・コンテキスト・オブジェクトの ADDRESS 属性に静的 IP アドレスを提供すると、デバイスによっては意図せずにトラステッド接続を取得してしまう場合があります。 トラステッド・コンテキスト・オブジェクトの ADDRESS 属性にドメイン・ネームを指定すると、DHCP 環境におけるこの問題を回避できます。
- WITH ENCRYPTION 暗号化値
- この特定の address-value に関するデータ・ストリームまたはネットワーク暗号化の最小暗号化レベルを指定します。 この encryption-value は、この特定の address-value に関するグローバル ENCRYPTION 属性の設定をオーバーライドします。
- 暗号化値
- この特定の address-value に関する ENCRYPTION トラスト属性と関連付けられる値を含むストリング定数を指定します。 encryption-value は、以下のいずれかの値でなければなりません (SQLSTATE 42615)。
- NONE。特定レベルの暗号化は不要です。
- LOW。最小の低レベルの暗号化が必要です。 着信接続がこの特定アドレスの暗号化設定と一致する場合、データベース・マネージャーの認証タイプは DATA_ENCRYPT でなければなりません。
- HIGH。着信接続がこの特定アドレスの暗号化設定と一致する場合、データベース・クライアントとデータベース・サーバーの間のデータ通信に Secure Sockets Layer (SSL) 暗号化または同等のものを使用する必要があります。
- この特定の address-value に関する ENCRYPTION トラスト属性と関連付けられる値を含むストリング定数を指定します。 encryption-value は、以下のいずれかの値でなければなりません (SQLSTATE 42615)。
- ADDRESS トラスト属性と関連付けられる値を含むストリング定数を指定します。 address-value は、IPv4 アドレス、IPv6 アドレス、またはセキュア・ドメイン・ネームでなければなりません。
- ENCRYPTION 暗号化値
- データ・ストリームまたはネットワーク暗号化の最小暗号化レベルを指定します。 デフォルトは「なし」です。
- 暗号化値
- この特定の address-value に関する ENCRYPTION トラスト属性と関連付けられる値を含むストリング定数を指定します。 encryption-value は、以下のいずれかの値でなければなりません (SQLSTATE 42615)。
- NONE。着信接続がこのトラステッド・コンテキスト・オブジェクトの ENCRYPTION 属性と一致する場合、特定レベルの暗号化は不要です。
- LOW。最小の低レベルの暗号化が必要です。着信接続がこのトラステッド・コンテキスト・オブジェクトの ENCRYPTION 属性と一致する場合、データベース・マネージャーの認証タイプは DATA_ENCRYPT でなければなりません。
- HIGH。着信接続がこのトラステッド・コンテキスト・オブジェクトの ENCRYPTION 属性と一致する場合、データベース・クライアントとデータベース・サーバーの間のデータ通信に Secure Sockets Layer (SSL) 暗号化または同等のものを使用する必要があります。
CREATE TRUSTED CONTEXT
を参照してください。
- この特定の address-value に関する ENCRYPTION トラスト属性と関連付けられる値を含むストリング定数を指定します。 encryption-value は、以下のいずれかの値でなければなりません (SQLSTATE 42615)。
- NO DEFAULT ROLE または DEFAULT ROLE role-name
- デフォルトのロールをこのトラステッド・コンテキストに基づくトラステッド接続と関連付けるかどうかを指定します。 このコンテキストのトラステッド接続がアクティブの場合、変更は次にユーザーの切り替えを要求するときまたは新規接続を要求するときに有効になります。
- NO DEFAULT ROLE
- トラステッド・コンテキストがデフォルトのロールを持たないことを指定します。
- DEFAULT ROLE ロール名
- role-name がトラステッド・コンテキストのデフォルトのロールであることを指定します。 role-name は現行のサーバーに存在するロールを識別するものでなければなりません (SQLSTATE 42704)。 トラステッド・コンテキストの定義の一部としてユーザー固有のロールがユーザーに定義されていない場合、このトラステッド・コンテキストに基づいて、トラステッド接続の中でこのロールがそのユーザーに使用されます。
- ENABLE または DISABLE
- トラステッド・コンテキストが使用可能かまたは使用不可かを指定します。
- ENABLE
- トラステッド・コンテキストが使用可能であることを指定します。
- DISABLE
- トラステッド・コンテキストが使用不可であることを指定します。 トラステッド接続を確立するとき、使用不可のトラステッド・コンテキストは考慮されません。
- ADD ATTRIBUTES
- トラステッド・コンテキストが定義される 1 つ以上の追加トラスト属性のリストを指定します。
- ADDRESS アドレス値
- クライアントがデータベース・サーバーと通信するために使用する実際の通信アドレスを指定します。 サポートされるプロトコルは TCP/IP のみです。 ADDRESS 属性は複数回指定できますが、address-value の対はそれぞれ属性のセットで固有でなければなりません (SQLSTATE 4274D)。
トラステッド接続を確立するときにトラステッド・コンテキストの ADDRESS 属性に対して複数の値が定義されている場合、候補となる接続によって使用されるアドレスがトラステッド・コンテキストの ADDRESS 属性の定義値のいずれかと一致していると、その接続はこの属性と一致しているとみなされます。
- アドレス値
- ADDRESS トラスト属性と関連付けられる値を含むストリング定数を指定します。 address-value は、IPv4 アドレス、IPv6 アドレス、またはセキュア・ドメイン・ネームでなければなりません。
- IPv4 アドレスの先頭にスペースが含まれていてはなりません。 このアドレスは小数点付き 10 進数アドレスとして表されます。 例えば IPv4 アドレスは 9.112.46.111 のようになります。 値 'localhost' またはそれに相当する表現 '127.0.0.1' は、一致という結果になりません。 代わりにホストの実 IPv4 アドレスを指定する必要があります。
- IPv6 アドレスの先頭にスペースが含まれていてはなりません。 このアドレスはコロン区切りの 16 進アドレスとして表されます。 例えば IPv6 アドレスは 2001:0DB8:0000:0000:0008:0800:200C:417A のようになります。 IPv4 がマップされた IPv6 アドレス (例えば ::ffff:192.0.2.128) は、一致という結果になりません。 同じように、'localhost' またはその IPv6 短表現 '::1' も一致という結果になりません。
- ドメイン・ネームはドメイン・ネーム・サーバーで IP アドレスに変換されます。 結果として生成される IPv4 または IPv6 アドレスはこのサーバーで決定されます。 例えばドメイン・ネームは corona.torolab.ibm.com のようになります。
- WITH ENCRYPTION 暗号化値
- この特定の address-value に関するデータ・ストリームまたはネットワーク暗号化の最小暗号化レベルを指定します。 この encryption-value は、この特定の address-value に関するグローバル ENCRYPTION 属性の設定をオーバーライドします。
- 暗号化値
- この特定の address-value に関する ENCRYPTION トラスト属性と関連付けられる値を含むストリング定数を指定します。 encryption-value は、以下のいずれかの値でなければなりません (SQLSTATE 42615)。
- NONE。特定レベルの暗号化は不要です。
- LOW。最小の低レベルの暗号化が必要です。 着信接続がこの特定アドレスの暗号化設定と一致する場合、データベース・マネージャーの認証タイプは DATA_ENCRYPT でなければなりません。
- HIGH。着信接続がこのトラステッド・コンテキスト・オブジェクトの ENCRYPTION 属性と一致する場合、データベース・クライアントとデータベース・サーバーの間のデータ通信に Secure Sockets Layer (SSL) 暗号化または同等のものを使用する必要があります。
- この特定の address-value に関する ENCRYPTION トラスト属性と関連付けられる値を含むストリング定数を指定します。 encryption-value は、以下のいずれかの値でなければなりません (SQLSTATE 42615)。
- ADDRESS トラスト属性と関連付けられる値を含むストリング定数を指定します。 address-value は、IPv4 アドレス、IPv6 アドレス、またはセキュア・ドメイン・ネームでなければなりません。
- DROP ATTRIBUTES
- 1 つ以上の属性をトラステッド・コンテキストの定義からドロップすることを指定します。 属性と属性値の対が現在トラステッド・コンテキスト定義の一部となっていない場合にはエラーが戻されます (SQLSTATE 4274C)。
- ADDRESS アドレス値
- 指定された通信アドレスをトラステッド・コンテキストの定義から除去することを指定します。 address-value は、既存の ADDRESS トラスト属性の値を含むストリング定数を指定します。
- ADD USE FOR
- このトラステッド・コンテキストに基づくトラステッド接続を使用できる追加ユーザーを指定します。 トラステッド・コンテキストの定義で PUBLIC とユーザーのリストからのアクセスが許可されている場合、ユーザーの指定が PUBLIC の指定をオーバーライドします。
- 指定された authorization-name でトラステッド接続を使用できることを指定します。 authorization-name はトラステッド・コンテキストを使用することが既に定義されている許可 ID を識別するものであってはならず、ADD USE FOR 節内に複数回指定することはできません (SQLSTATE 428GM)。 これにステートメントの許可 ID を指定することもできません (SQLSTATE 42502)。
- ROLE ロール名
- 使用されるユーザーのロールが role-name であることを指定します。 role-name は現行のサーバーに存在するロールを識別するものでなければなりません (SQLSTATE 42704)。 ユーザーに対して明示的に指定されたロールは、トラステッド・コンテキストと関連付けられているすべてのデフォルトのロールをオーバーライドします。
- PUBLIC
- すべてのユーザーがこのトラステッド・コンテキストに基づくトラステッド接続を使用できることを指定します。 トラステッド・コンテキストを使用するために PUBLIC が既に定義されていてはならず、PUBLIC を ADD USE FOR 節内で複数回指定されていてもなりません (SQLSTATE 428GM)。
- WITHOUT AUTHENTICATION または WITH AUTHENTICATION
- このトラステッド・コンテキストに基づくトラステッド接続で現行のユーザーを切り替えるときに認証を必要とするかどうかを指定します。
- WITHOUT AUTHENTICATION
- このトラステッド接続に基づくトラステッド接続で現行のユーザーをこのユーザーに切り替えるときに認証を必要としないことを指定します。
- WITH AUTHENTICATION
- このトラステッド接続に基づくトラステッド接続で現行のユーザーをこのユーザーに切り替えるときに認証を必要とすることを指定します。
- 指定された authorization-name でトラステッド接続を使用できることを指定します。 authorization-name はトラステッド・コンテキストを使用することが既に定義されている許可 ID を識別するものであってはならず、ADD USE FOR 節内に複数回指定することはできません (SQLSTATE 428GM)。 これにステートメントの許可 ID を指定することもできません (SQLSTATE 42502)。
- REPLACE USE FOR
- 特定のユーザーまたは PUBLIC がトラステッド・コンテキストを使用する方法が変更されることを指定します。
- トラステッド接続の使用が変更されるユーザーの authorization-name を指定します。 トラステッド・コンテキストで authorization-name による使用許可が既に定義されていなければなりません (SQLSTATE 428GN)。
また、authorization-name を REPLACE USE FOR 節内で複数回指定されていてはなりません (SQLSTATE 428GM)。 これにステートメントの許可 ID を指定することもできません (SQLSTATE 42502)。
- ROLE ロール名
- role-name がユーザーのロールであることを指定します。 role-name は現行のサーバーに存在するロールを識別するものでなければなりません (SQLSTATE 42704)。 ユーザーに対して明示的に指定されたロールは、トラステッド・コンテキストと関連付けられているすべてのデフォルトのロールをオーバーライドします。
- PUBLIC
- PUBLIC によって使用されるトラステッド接続の属性が変更されることを指定します。 トラステッド・コンテキストで PUBLIC による使用許可が既に定義されていなければなりません (SQLSTATE 428GN)。 また、PUBLIC を REPLACE USE FOR 節内で複数回指定されていてはなりません (SQLSTATE 428GM)。
- WITHOUT AUTHENTICATION または WITH AUTHENTICATION
- このトラステッド・コンテキストに基づくトラステッド接続で現行のユーザーを切り替えるときに認証を必要とするかどうかを指定します。
- WITHOUT AUTHENTICATION
- このトラステッド接続に基づくトラステッド接続で現行のユーザーをこのユーザーに切り替えるときに認証を必要としないことを指定します。
- WITH AUTHENTICATION
- このトラステッド接続に基づくトラステッド接続で現行のユーザーをこのユーザーに切り替えるときに認証を必要とすることを指定します。
- トラステッド接続の使用が変更されるユーザーの authorization-name を指定します。 トラステッド・コンテキストで authorization-name による使用許可が既に定義されていなければなりません (SQLSTATE 428GN)。
また、authorization-name を REPLACE USE FOR 節内で複数回指定されていてはなりません (SQLSTATE 428GM)。 これにステートメントの許可 ID を指定することもできません (SQLSTATE 42502)。
- DROP USE FOR
- トラステッド・コンテキストを使用できなくなるユーザーを指定します。 トラステッド・コンテキストの定義から除去されるのは、現在トラステッド・コンテキストの使用を許可されているユーザーです。 1 人以上のユーザー (全ユーザーではない) をトラステッド・コンテキストの定義から除去できる場合、指定されたユーザーが除去され、警告が戻されます (SQLSTATE 01682)。 指定されたユーザーをトラステッド・コンテキストの定義から除去できない場合にはエラーが戻されます (SQLSTATE 428GN)。
- 指定された許可 ID がこのトラステッド・コンテキストを使用できないようにします。
- PUBLIC
- すべてのユーザー (ただしシステム許可 ID と明示的に使用可能にされた個々の許可 ID は除く) がこのトラステッド・コンテキストを使用できないようにします。
ルール
- トラステッド・コンテキスト排他 SQL ステートメントの後は、COMMIT または ROLLBACK ステートメントでなければなりません (SQLSTATE 5U021)。 トラステッド・コンテキスト排他 SQL ステートメントは次のとおりです。
- CREATE TRUSTED CONTEXT、ALTER TRUSTED CONTEXT、または DROP (TRUSTED CONTEXT)
- グローバル・トランザクション内でトラステッド・コンテキスト排他 SQL ステートメントを発行することはできません。 例えば、フェデレーテッド・トランザクションにおける 2 フェーズ・コミットの一部として開始されるグローバル・トランザクションまたは XA トランザクションなどの場合です (SQLSTATE 51041)。
注
- トラステッド・コンテキスト定義の一部として IP アドレスを提供するとき、そのアドレスの形式はネットワークで有効なものでなければなりません。 例えば、ネットワークが IPv4 であるのに IPv6 形式のアドレスを提供しても一致には至りません。 混合環境では、IPv4 と IPv6 両方のアドレス表現を指定するとよいでしょう。 さらに望ましいのは、セキュア・ドメイン・ネーム (例えば corona.torolab.ibm.com) を指定することです。 その場合、アドレス・フォーマットの詳細が非表示になるからです。
- データベース・パーティション全体を通じて、同時に実行できる非コミットのトラステッド・コンテキスト排他 SQL ステートメントは 1 つのみです。 非コミットのトラステッド・コンテキスト排他 SQL ステートメントが実行されている場合、後続のトラステッド・コンテキスト排他 SQL ステートメントは、現行のトラステッド・コンテキスト排他 SQL ステートメントがコミットまたはロールバックされるまで待機します。
- システム・カタログに変更が書き込まれますが、それらがコミットされるまでは (たとえステートメントを発行する接続であったとしても) 有効になりません。
- 操作順序: ALTER TRUSTED CONTEXT ステートメント内の操作順序は次のとおりです。
- DROP
- ALTER
- ADD ATTRIBUTES
- ADD USE FOR
- REPLACE USE FOR
- 既存のトラステッド接続における変更の有効化: 変更されるトラステッド・コンテキストについてのトラステッド接続が存在する場合、次にユーザーの切り替えを要求するときまたは接続を終了するときまで接続はトラステッドの状態を保ち、それまでは ALTER TRUSTED CONTEXT ステートメント発行前の定義が有効となります。 このコンテキストのトラステッド接続がアクティブの間にトラステッド・コンテキストが使用不可になる場合、次にユーザーの切り替えを要求するときまたは接続を終了するときまで接続はトラステッドの状態を保ちます。 ALTER TRUSTED CONTEXT ステートメントによってトラスト属性が変更される場合、トラステッド・コンテキストを使用する ALTER TRUSTED CONTEXT ステートメント発行時に存在するトラステッド接続は継続を許可されます。
- ロールの特権: ユーザーまたはトラステッド・コンテキストにロールが関連付けられていない場合、ユーザーに関連付けられている特権のみ適用可能です。 これはトラステッド・コンテキストにない場合と同じです。
例
- 例 1: APPSERVER というトラステッド・コンテキストが存在し、それが使用可能になっているとします。 ALTER TRUSTED CONTEXT ステートメントを発行し、Bill がトラステッド・コンテキスト APPSERVER を使用できるようにし、さらにトラステッド・コンテキストが使用不可の状態となるようにします。
ALTER TRUSTED CONTEXT APPSERVER DISABLE ADD USE FOR BILL
- 例 2: SECUREROLE というトラステッド・コンテキストが存在するとします。 ALTER TRUSTED CONTEXT ステートメントを発行して、既存のユーザー Joe が認証付きでトラステッド・コンテキストを使用するように変更し、それ以外の全員が認証なしでトラステッド・コンテキストを使用するように追加します。
ALTER TRUSTED CONTEXT SECUREROLE REPLACE USE FOR JOE WITH AUTHENTICATION ADD USE FOR PUBLIC WITHOUT AUTHENTICATION
- 例 3: ADDRESS 属性値 '9.13.55.100' および '9.12.30.112'、ENCRYPTION 属性値 'NONE' を持つ SECUREROLEENCRYPT というトラステッド・コンテキストが存在するとします。 ALTER ステートメントを発行して、ADDRESS 属性値を変更し、暗号化属性を 'LOW' に変更します。
ALTER TRUSTED CONTEXT SECUREROLEENCRYPT ALTER ATTRIBUTES (ADDRESS '9.12.155.200', ENCRYPTION 'LOW')