資格情報ボールト¶
Virtual DataPort では、外部の 資格情報ボールト から JDBC データソースの資格情報を取得できます。つまり、データベースに保存されたサービスアカウントのユーザー名とパスワードをデータソースに入力する代わりに、パスワード保管方法に格納している「シークレット」の名前を入力します。すると実行時に、データソースがパスワード保管方法からユーザー名とパスワードを取得します。
資格情報ボールトを使用する主なメリットは以下のとおりです。
Virtual DataPort の開発者は、データベースのサービスアカウントのユーザー名とパスワードを把握する必要がなくなります。
組織のセキュリティチームは、JDBC データソースが使用するサービスアカウントのパスワードをローテーションするように資格情報ボールトを構成できます。これにより、長期間使用されていたパスワードを短期間で変更できるようになり、セキュリティ侵害のリスクが低下します。資格情報ボールトを使用せずにサービスアカウントのパスワードを変更する場合は、データベース管理者と Virtual DataPort の管理者が同時にパスワードを変更するように調整しなければなりません。
組織のセキュリティチームは、各サービスアカウントがどのアプリケーションに使用されているかを常に追跡できます。
資格情報ボールトへのアクセスの有効化¶
資格情報ボールトへのアクセスを有効にするには、以下の手順に従って実施してください。
[Administration] メニュー > [Server configuration] に移動し、[Credentials vault] をクリックします。
[Use external credentials vault] を選択して、組織が使用する [Provider] を指定します。
構成の詳細を入力します。内容は使用する資格情報ボールトによります。入力したら、[Ok] をクリックします。
入力後の再起動は不要です。
資格情報ボールトから資格情報を取得する必要がある JDBC データソースを開き、[Authentication] から適切なオプションを選びます。
JDBC データソースを構成するとき、そのデータベースのサービスアカウントの資格情報を設定します。データソースは、その資格情報を使用してデータベースに接続し、クエリを実行します。 パススルーセッション資格情報 を有効にした場合でも、データソースは、基本ビューの作成プロセス中、テーブルとデータベースのビューを表示するために、このサービスアカウントを使用します。
このサービスアカウントの資格情報は、次を行うことで提示できます。
このアカウントのユーザーとパスワードを入力する。
あるいは、データソースがデータベースに接続する必要があるときに、資格情報ボールトからユーザーとパスワードを取得するように、データソースを構成する。
サポートされている資格情報ボールト¶
Virtual DataPort では、次の資格情報ボールトがサポートされています。
データソースが資格情報ボールトから資格情報を取得する方法¶
次のような状況を考えます。
組織の資格情報ボールトを使用するように Virtual DataPort が構成されているとします。つまり、[Server Configuration] ダイアログ > [Credentials vault] からこのシステムを有効化し、必要な構成を入力済みです。
サービスアカウントのユーザー名とパスワードを入力するのではなく、パスワード保管方法から資格情報 (ユーザー名とパスワード) を取得するように、JDBC データソースが構成されているとします。
データソースでは、 パススルー資格情報 を 有効にしていない ものとします。
この場合、データソースがデータベースとのコネクションを初めて開く際に、次の動作が行われます。
データソースが資格情報ボールトにリクエストを送信し、ユーザー名とパスワードを取得します。
取得した資格情報を使用して、データソースがデータベースとのコネクションを開きます。
データソースは、このデータベースへのコネクションを再度作成する際の速度を向上させるために、この資格情報をハードドライブではなくメモリに保持します。
次回以降、このデータソースが同じデータベースとのコネクションを開く際は、次の操作を行います。
データソースは、メモリに保存されている資格情報を使用してコネクションを開こうとします。この際、過去に資格情報ボールトから取得した資格情報を使用します。
接続に失敗した場合、データソースは資格情報ボールトに資格情報をリクエストして、再度接続を試みます。
それでも接続に失敗した場合には、データソースからユーザーにエラーが返されます。
ステップ 1 とステップ 2 は、ユーザーが介在することなく、自動的に行われます。
このプロセスは、組織がどの資格情報ボールトを使用する場合でも同じです。Virtual DataPort がそれぞれの資格情報ボールトに資格情報を要求する方法だけが異なります。
その他の考慮すべき事項
デフォルトで、JDBC データソースは、データベースへの コネクションプール を作成します。資格情報ボールトに資格情報をリクエストするようにデータソースを構成する場合、新しいコネクションを開くプロセスは、プールが有効でも無効でも同じです。
データソースでパススルー資格情報のオプションを有効にした場合、データソースは Virtual DataPort に接続されたユーザーの資格情報を使用してクエリを実行します。また、資格情報ボールトから取得した資格情報は、データベースのイントロスペクションにのみ使用されます。つまり、[Create base view] をクリックして、データベースのテーブルとビューを表示する場合にのみ使用されます。
Virtual DataPort を再起動する場合、またはデータソースが再作成される場合 (構成を変更して [Save] をクリックした場合など)、このデータソース用にメモリに保存された資格情報はメモリから削除され、資格情報ボールトにリクエストされます。
Use Kerberos 認証オプションを使用して資格情報を取得するように、データソースを構成することもできます。この場合、データソースは資格情報ボールトから資格情報を取得し、この資格情報を使用して Kerberos チケットを取得します。
ログイン名をパラメータ化したパターンをシークレット名として指定¶
資格情報ボールトから資格情報を取得するようにデータソースを構成する場合、データソースの構成の [Account name] フィールドに変数 @{USER_NAME} を追加できます。これにより、データソースはその資格情報を、同一シークレットから取得する代わりに、クエリの実行ユーザーに基づいて取得します。
この機能を使用するには、以下の手順に従います。
資格情報ボールトの資格情報を必要とするデータソースを開きます。
[Account Name] に変数
@{USER_NAME}
を含むシークレット名を入力します。たとえば、「secret/data/@{USER_NAME}/denodo-user
」と入力します。実行時にデータソースがコネクションを確立すると、
@{USER_NAME}
は、クエリを実行するユーザーのユーザー名で置き換えられます。たとえば、ユーザー michael がこのデータソースを伴うクエリを実行している場合、データソースはアカウント
secret/data/michael/denodo-user
からシークレットを取得します。
この拡張機能により、各ユーザーにそのログイン名に基づいてパーソナライズされた資格情報を提供して、組織内のセキュリティとアクセス制御を強化します。
注釈
この機能を使用する場合、以下の点を考慮してください。
資格情報ボールトに保存されているシークレット名が各ユーザーの補間されたパターンに一致していることを確認します。
資格情報ボールトからシークレットを取得し、ソースとのコネクションを確立するプロセスは、同じままです。