Kerberos Authentication for OCI Database with PostgreSQL

OCI Database with PostgreSQLデータベース・システムでKerberos認証を有効化および管理する方法について学習します。

このトピックでは、PostgreSQLデータベース・システムでKerberos認証を有効化、管理および無効化するためのKerberos認証、その利点、前提条件、制限およびステップバイステップの手順について説明します。

Kerberosは業界標準の認証プロトコルで、パスワードではなく暗号化チケットを使用して、セキュアで一元化されたクライアント/サーバー認証を提供します。KerberosとOCI Database with PostgreSQLを統合することで、一元化された資格証明管理を活用し、セキュリティを強化し、パスワードベースの認証に関連するリスクを軽減できます。

Kerberos認証は、PostgreSQLの組み込みGSSAPIを介してサポートされます。

OCI Database with PostgreSQLのKerberos認証には、次の利点があります。
  • 一元化された資格証明管理およびシングル・サインオン(SSO)機能。
  • ネットワーク認証フローからパスワードを消去します。
  • Active DirectoryやMIT Kerberosなどの一般的なエンタープライズ・アイデンティティ・システムと統合されます。

ワークフロー

Kerberosは、秘密キー暗号化を使用した強力なクライアント/サーバー認証用に設計されたネットワーク認証プロトコルです。一般的なワークフローは次のとおりです。

  1. 信頼できるKey Distribution Center (KDC)で認証し、チケット認可チケット(TGT)を受け取ります。
  2. PostgreSQLデータベースに接続する場合は、KDCからサーバーへのサービス・チケットを提示します。
  3. PostgreSQLサーバーは、セキュアなキータブ・ファイルを使用してチケットを検証します。パスワードはネットワーク経由で送信されません。

前提条件

OCI Database with PostgreSQLでKerberos認証を使用するには、次の前提条件が必要です。
  • Active DirectoryやMIT Kerberosなどの操作可能な Kerberosインフラストラクチャ。
  • OCI Vaultへのアクセスおよび必要なOCI権限。
  • KDCおよびOCIリソースへの特権アクセス。
  • PostgreSQLのユーザー/ロール管理に精通しています。

Kerberos認証の設定

次のタスクを実行して、OCI Database with PostgreSQLのKerberos認証を設定します。

ステップ1: KDCでのサービス・プリンシパルとキータブの作成

Active Directory

  1. 専用のサービス・アカウントを作成します。
  2. 必要なすべてのPostgreSQLエンドポイントFQDNをアカウントのSPNとしてマップします。
  3. 強力な暗号化を使用してキータブ・ファイルを生成します。次に例を示します。
    ktpass /out odsp.krb5.keytab /princ postgres/<database_fqdn>@your.realm /mapuser <service_user> /crypto AES256-SHA1 +rndpass ...

    承認済の暗号化タイプのみが使用されていることを確認します(例: aes256-cts-hmac-sha256-128)。

MIT Kerberos

エンドポイントごとに、プリンシパルを追加し、キータブを生成します。次に例を示します。
kadmin.local -q "addprinc -randkey postgres/<database_fqdn>@your.realm"
kadmin.local -q "ktadd -k odsp.krb5.keytab postgres/<database_fqdn>@your.realm"

ステップ2: OCI VaultにKeytabを格納する

  1. OCI Vaultでキータブ・ファイルをシークレットとしてアップロードします。
    詳細は、シークレットの管理.を参照してください
  2. IAMポリシーを更新して、このシークレットを読み取るためのPostgreSQLデータベース・システム・アクセス権を付与します。たとえば:
    allow any-user to SECRET_BUNDLE_READ in compartment <compartment_ocid> where all {request.user.id='<database_system_ocid>', target.secret.id='<secret_ocid>'}

ステップ3: PostgreSQLデータベース・システムでのKerberosの有効化

CLIまたはAPIを使用して、PostgreSQLデータベース・システムを編集します。
  1. 「Kerberos Authentication」を「ENABLED」に設定します。
  2. Kerberosレルム名、キータブ・シークレットOCIDおよびバージョンを指定します。
キータブがダウンロードされ、postgresql.confおよびpg_hba.confが更新され、PostgreSQLがリロードされます。

ステップ4: Kerberos認証用のユーザーの指定

  1. oci_admin_roleを持つユーザーとして、PostgreSQLデータベース・システムにサインインします。
  2. 必要なKerberosプリンシパルごとに、対応するユーザーを作成し、odsp_kerberosロールを割り当てます。
    CREATE ROLE "kerberos_user@your.realm" WITH LOGIN;
    GRANT odsp_kerberos TO "kerberos_user@your.realm";
  3. 必要に応じて、他のすべてのロール/権限を割り当てます。
  4. 各Kerberosプリンシパルには、独自のPostgreSQLデータベース・システム・ユーザーが必要です。

Kerberosクライアントの使用法

クライアントシステムで、次のコマンドを実行します。

kinit kerb_user@your.realm
psql "sslmode=prefer host=<database_fqdn> dbname=<datbase_name> user=kerb_user@your.realm" 

Kerberos認証の無効化

CLIまたはAPIを使用して、PostgreSQLデータベース・システムを編集し、Kerberos認証をDISABLEDに設定します。詳細は、「データベース・システムの編集」を参照してください。

このアクションは、キータブ構成を削除し、Kerberos認証を無効にします。

Keytabのローテーションとメンテナンス

セキュリティ・ポリシーに従って、Kerberosサービス・プリンシパル資格証明を定期的にローテーションします。

中断を最小限に抑えながら Kerberos資格をローテーションするには、2つの手順として実行する必要があります。

  1. 最初に、新しいキータブをOCI Vaultの新しいシークレットとして追加します。
  2. PostgreSQLデータベース・システムを更新して、両方のキータブ(新しいキータブ・シークレットはcurrentCredential、既存のキータブ・シークレットはbackupCredential)を含めます。

しばらくして、PostgreSQLデータベース・システムを1つのキータブ(新しいキータブ・シークレット)のみを持つように更新します(currentCredentialbackupCredential=null)。

ノート

キータブ/キーのローテーション中に認証が短時間中断する可能性があります。

トラブルシューティング

発生する問題に対処するには、次のタスクを実行します。

  • PostgreSQLサービス・ログでKerberos認証の失敗を確認します。
  • PostgreSQLデータベース・システム、クライアントおよびKDC間でクロックが同期されていることを確認します。
  • 認証の問題が発生した場合は、適切なSPN、キータブおよび暗号化設定を確認してください。

制限事項

OCI Database with PostgreSQLでのKerberos認証の使用に関する次の制限事項に注意してください:

  • Kerberos認証は、セキュリティの追加レイヤーです。パスワード認証は引き続き使用できます。
  • データベース・アクセスを必要とする各Kerberosプリンシパルには、対応するPostgreSQLユーザー/ロールが作成され、odsp_kerberosロールが付与されている必要があります。
  • PostgreSQLはグループベースの認証をサポートしていないため、KerberosプリンシパルごとにPostgreSQLユーザーを作成する必要があります。
  • すべてのサービス・プリンシパル(SPN)およびキータブ管理は、お客様の責任です。
  • Kerberosはクロックドリフトに敏感です。NTPまたは同等のサービスがどこでも実行されていることを確認します。
  • キータブのローテーション中、特にMIT Kerberos環境では、簡単な認証が失敗する可能性があります。
  • KDCの停止により、Kerberosで認証されたユーザーがサインインできなくなりますが、パスワードで認証されたユーザーは影響を受けません。
  • PostgreSQLデータベース・システムには、キータブを含むOCI Vaultのシークレットにアクセスする権限が必要です。