17.00 - 17.05 - 許可のルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)
  • CREATE AUTHORIZATIONリクエストを実行すると、データベースは許可を評価します。システムは次の項目を検査し、そのいずれかが偽の場合、許可の試行でエラーが返されます。
    • 各ノードのOSパスワードが評価されます。
    • OSプラットフォーム ユーザーはtdatudfという名前のOSグループに属していなければなりません。

      tdatudfはOSプラットフォーム ユーザーの1次グループである必要はありませんが、そのユーザーはそのグループのメンバーでなければなりません。グループ、ローカル グループなどの特定の定義については、Linuxオペレーティング システムの該当する資料を参照してください。

      tdatudfグループは保護モードの外部ルーチンで使用され、常に存在していなければなりません。外部ルーチンのtdatudfグループの割り当ては、そのEXERNAL SECURITY句を使って変更できます。

      EXTERNAL SECURITY句を指定する外部ルーチンでのみこのグループを使用し、それ以外の目的では使用しないようにすることが最善です。

  • 認証プロセスは、サイトで設定されている認証方式がどちらであれ、その方式を使用します。例えば、サイトでの認証用にKerberosを使用する場合、ユーザーはその方法を使って検証されます。

    プラットフォーム ノードがグローバル認証プロセスの一部であれば、認証は自動で行なわれます。それがそのプロセスの一部でない場合、それぞれのノードにローカルOSユーザーを作成しなければなりません。ローカルOSユーザーは、手動での作成が必要なあらゆるユーザーです。ローカルOSユーザーはドメインに関連付けられません。

  • 許可パスワードは暗号化形式でも非暗号化形式でも保存されないため、CREATE AUTHORIZATIONをマクロ定義で指定することはできません。これにより、OSログオン ユーザーIDのセキュリティが損なわれます。CREATE MACROおよびREPLACE MACROを参照してください。
  • 外部データにアクセスする外部ルーチンはすべて、セキュア モードか保護モードのいずれかで、OSプラットフォーム ユーザーのユーザーIDの下で別個のプロセスとして実行する必要があります。

    EXTERNAL SECURITY句を含む外部ルーチンを作成する場合、その句で指定されるOSユーザーの名前は、tdatudfグループのメンバーでなければなりません。システムはデフォルトでこのグループをデータベースのインストール時に作成します。

    tdatudfグループは常に存在している必要があり、変更できません。

    これらの制限が存在するのは、データベースが保護モードまたはセキュア モードのルーチンの実行で常にtdatudf グループを使用するためです。

    外部ルーチンは、保護モードまたはセキュア モードで実行される際、許可に関連するOSユーザーとして実行されます。

    保護モードとセキュア モードのどちらの場合にも、システムは外部ルーチンを実行するためにPEまたはAMP vprocで必要に応じてプラットフォーム プロセスを設定します。

    AMPまたはPEにつき、最大で20の保護モードのサーバーと20のセキュア モードのサーバーを実行できます。具体的には、AMPまたはPEごとに最大40台の「保護」モードのサーバーを同時に実行できます。ただし、保護モード タイプとセキュア モード タイプをそれぞれ20台以下にする必要があります。

  • 1つのvprocで設定可能なサーバー プロセスの数には限りがあります。C/C++とJavaの両方のサーバーでの限界は、cufconfigユーティリティのさまざまなフィールドによって制御されます。詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。

    cufconfigのフィールドを変更するときには、保護モードまたはセキュア モードのプロセスがそれぞれその独自の専用共有メモリを使用すること、これらの専用共有メモリには専用ディスク スワップ領域が必要なことに注意してください。CまたはC++で記述されたルーチンの各プロセスには、256 KBのディスク領域が必要です。

    例えば、vprocにつき2つの保護モードのサーバーが割り振られ、ノードに8つのvprocがある場合、4メガバイトのシステム ディスク ファイル領域が必要になります。次の等式を参照してください。


    総スワップ領域の式

    置き換えると、vprocにつき2つの保護モードのサーバーが定義されているシステムでは4MBのディスク スワップ領域が必要になります。


    総スワップ領域(8 vproc、2台のサーバー)

    CおよびC++外部ルーチンのvprocごとに、20の保護モードのサーバーが定義されているシステムでは、40MBのディスク スワップ領域が必要になります。


    総スワップ領域(8 vproc、20台のサーバー)

    システムは、領域を必要とする外部ルーチンが実行されるまで領域を割り振りません。10のセッションを実行し、それぞれのセッションが同じインスタンスのUDFを使用するクエリーを実行する場合、システムはvprocにつき10の保護モードのサーバーを作成します。

    しかし、10のセッションがUDFのクエリーを順次実行する場合、作成する必要のある保護モードのプロセスはvprocにつき1つだけです。いったん保護モードのサーバーが設定されると、そのサーバーはデータベースが再始動されるまで存在します。サーバーが全く使用されない場合、システムはそれをディスクにスワップ アウトするので、そのサーバーは物理メモリ リソースを消費しません。

    外部ルーチン用のJavaサーバーごとに、約30 MBのスワップ領域用のメモリが必要になります。各ノードには、そのようなJavaサーバーが2つ存在できます。非セキュア モードのJava UDFのためのJava UDFマルチスレッド サーバーは、最小でもさらに30 MBのメモリを使用します(必要量は、ユーザーのJARのサイズに応じて大きくなることがあります)。そのため、すべてのサーバー フレーバーが使用されている場合、各ノードには約100 MBのスワップ領域が必要になります。