パスワード・ベリファイアは、Oracle Internet Directoryおよび他のOracleコンポーネントに対してユーザーを認証するために使用するセキュリティ資格証明です。この章では、Oracle Internet Directoryでこれらのパスワード・ベリファイアを集中的に格納する方法について説明します。
この章の項目は次のとおりです。
ldapmodifyを使用したOracle Internet Directoryに対する認証用パスワード・ベリファイアの作成用パスワード・ハッシング・スキームの管理
Oracle Directory Services Managerを使用したOracleコンポーネント用パスワード検証プロファイルの管理
退職または役職が変わったユーザーの権限は、その当日に変更して、古くなった未使用のアカウントや権限が誤使用されないようにする必要があります。ユーザー・アカウントとパスワードが複数のデータベースに分散される大企業では、パスワードが集中管理されていないと、管理者が万全なセキュリティに必要な速度で変更を実行できない可能性があります。
Oracle Internet Directoryでは、セキュリティ資格証明を集中的に格納して、エンド・ユーザーと管理者が簡単に管理できるようにします。このコンポーネントで格納される情報は、次のとおりです。
ディレクトリ自体に対する認証ユーザーのパスワード
その他のOracleコンポーネントに対する認証ユーザーのパスワード・ベリファイア
Oracle以外のアプリケーションがディレクトリ対応の場合、ユーザーは非Oracleの認証資格証明を格納できます。これらのアプリケーションは、製品エントリの下に独自のコンテナを作成する必要があります。
Oracle Internet Directoryでは、ユーザーのディレクトリ・パスワードをuserPassword
属性に格納します。Oracle Internet Directoryでサポートされるハッシング・アルゴリズムの1つを使用して、パスワードを一方向ハッシュ値のBASE64エンコーディング文字列で格納することで、このパスワードを保護できます。パスワードを暗号値ではなく一方向ハッシュ値として格納することによって、パスワードのセキュリティが向上します。これは、悪意のあるユーザーにはこれらの値を読むことも復号化することもできないためです。
Oracle Internet DirectoryのデフォルトのuserPasswordハッシング・アルゴリズムは、MD4からSHAに変更されました。このデフォルト・スキームは、新規のインストールに対してのみ有効です。新規のインストール後に作成されたすべてのuserPassword
属性は、SHAを使用した一方向ハッシュであり、Oracle Internet Directoryに格納されます。アップグレードを実行する場合、アップグレードを行う前のデフォルトのハッシング・スキームは保持されます。たとえば、アップグレード前のデフォルト・スキームがMD4であった場合、アップグレード後のデフォルト・スキームもMD4になります。userPassword
のセキュリティを強化するには、アップグレード後、ただちにデフォルト・スキームをSHAに変更します。デフォルト・スキームをSHAに変更しても、ユーザー・ログインには影響しません。セキュリティを強化するため、ユーザーはSHA値のハッシュ値がOracle Internet Directoryに格納されるように、パスワードをリセットする必要があります。
Oracle Internet Directoryでは、ユーザー・パスワードをorclrevpwd
という構成属性に可逆暗号化形式で格納します。この属性は、パスワード・ポリシー・エントリの属性orclpwdencryptionenable
が1
に設定されている場合にのみ生成されます。orclrevpwd
属性は、SSLサーバー認証メカニズムおよびSSLクライアントとサーバー認証メカニズムでのみ問合せが可能です。非SSLセッションでは、この属性の問合せはできません。
この項の項目は次のとおりです。
Oracle Internet Directoryでは、ユーザーのディレクトリ・パスワードを一方向ハッシュ値としてuserPassword
属性に格納することで、そのパスワードを保護します。管理者は、使用するハッシング・アルゴリズムを選択します。パスワードを暗号値ではなく一方向ハッシュ値として格納することによって、パスワードのセキュリティが向上します。これは、悪意のあるユーザーにはこれらの値を読むことも復号化することもできないためです。
ディレクトリ・サーバーへの認証時、クライアントはパスワードをクリアテキストでディレクトリ・サーバーに提供します。ディレクトリ・サーバーは、DSE属性のuserpassword
に指定されているハッシング・アルゴリズムを使用して、このパスワードをハッシュします。次に、このハッシュされたパスワードをバインド・エントリのuserPassword
属性に保存されているハッシュ済パスワードと照合します。ハッシュされたパスワードの値が一致した場合、サーバーはユーザーを認証します。ハッシュされたパスワードの値が一致しない場合、サーバーは「無効な資格証明」のエラー・メッセージをユーザーに送信します。
外部ユーザーに対しては、Oracle Internet Directoryは認証中に属性orclrevpwd
を生成します。特に、クライアントがクリアテキスト形式のユーザー・パスワードでldapcompare
を使用して認証を行う場合に、この属性が生成されます。属性orclrevpwd
が存在しない場合、Oracle Internet Directoryサーバーは、認証用に提供されたクリアテキスト形式のパスワードを使用してこの属性を生成します。ただし、外部ユーザーがldapbind
を使用してOracle Internet Directoryに対して認証される場合、この属性は生成されません。
インストール時、Oracle Identity Management 11gインストーラは、ユーザーのディレクトリ・パスワードを保護するために一方向ハッシング・スキームをSHAに設定します。この値は、ルートDSEのorclCryptoScheme
属性に格納されます。値は、次のハッシング・スキームに変更できます。
SHA-1: Secure Hash Algorithm。MD5よりも長い160ビットのハッシュを生成します。このアルゴリズムはMD5よりも若干速度が遅くなりますが、大きなメッセージ・ダイジェストによって、総当たり攻撃や反転攻撃に対処できます。
SSHA: Salted Secure Hash Algorithm。SHAと類似していますが、パスワードにランダムなsalt文字を使用して生成します。
「ldapmodifyを使用したOracle Internet Directoryに対する認証用パスワード・ベリファイアの作成用パスワード・ハッシング・スキームの管理」および「Oracle Directory Services Managerデータ・ブラウザを使用したシステム構成属性の管理」を参照してください。
注意: 過去において、Oracle Internet Directoryは、UNIX CryptのDESバリアントをサポートしていました。11gリリース1(11.1.1)Oracle Internet Directoryには、UNIX CryptのMD5およびBlowfishバリアントを解釈する機能があります。つまり、これらのバリアントを使用して事前にハッシュ処理されたパスワードをOracle Internet Directoryにそのままインポートし、作業を続行できます。ただし、orclcryptoscheme としてUNIX Cryptを選択する場合は、引き続きUNIX CryptのDESバリアントのみが生成されます。 |
次の例は、my_ldif_file
という名前のLDIFファイルを使用してパスワード・ハッシング・アルゴリズムをSHAに変更します。
ldapmodify -D cn=orcladmin -q -h myhost -p 3060 -v -f my_ldif_file
LDIFファイルmy_ldif_file
の内容は、次のとおりです。
dn: changetype: modify replace: orclcryptoscheme orclcryptoscheme: SHA
Oracleコンポーネントは、パスワードとパスワード・ベリファイアの両方をOracle Internet Directoryに格納します。この項の項目は次のとおりです。
Oracleコンポーネントは、それぞれのコンポーネントのパスワード値をパスワード・ベリファイアとしてOracle Internet Directoryに格納できます。パスワード・ベリファイアとは、クリアテキストのパスワードをハッシュしたバージョンで、このバージョンはBASE64エンコーディング文字列としてエンコードされます。
次のいずれかのハッシング・アルゴリズムを使用して、パスワード・ベリファイアを導出できます。
SHA-1: Secure Hash Algorithm。MD5よりも長い160ビットのハッシュを生成します。このアルゴリズムはMD5よりも若干速度が遅くなりますが、大きなメッセージ・ダイジェストによって、総当たり攻撃や反転攻撃に対処できます。
SSHAおよびSMD5
SASL/MD5: Simple Authentication and Security Layer/MD5。接続ベースのプロトコルに認証サポートを追加し、チャレンジ/レスポンス・プロトコルを使用します。
O3LOGON: ベリファイアを生成するOracle独自のアルゴリズムです。チャレンジ/レスポンス・プロトコルを使用する点でSASL/MD5と似ています。
ORCLWEBDAV: SASL/MD5と同じ専用アルゴリズムで、username@realm
の形式のユーザー名を使用します。
ORCLLM: SMBLMアルゴリズムのOracle表現です。SMBLMアルゴリズムは、SMB/CIFSチャレンジ/レスポンス認証アルゴリズムのLMバリアントOracle表現です。
ORCLNT: SMBNTアルゴリズムのOracle表現です。SMBNTアルゴリズムは、SMB/CIFSチャレンジ/レスポンス認証アルゴリズムのNTバリアントOracle表現です。
Oracleアプリケーションのインストール時に、Oracle Identity Management 11gインストーラは、そのアプリケーションに対して、必要なパスワード検証情報のすべてを含むパスワード検証プロファイル・エントリを作成します。図29-1に示すように、このエントリは、レルム固有のOracleコンテキストの下にある製品エントリ下のアプリケーション・エントリの直下に配置されます。
このベリファイア・プロファイル・エントリは、指定されたレルム内のユーザーのみに適用されます。ベリファイアの生成を適切に行うには、レルム固有のOracleコンテキストの共通エントリのorclcommonusersearchbase
属性に適切な値を設定する必要があります。
ディレクトリとOracleコンポーネントの両方とも、ユーザー・パスワードをユーザー・エントリに格納しますが、格納する属性は異なります。ディレクトリは、userPassword
属性にユーザー・パスワードを格納しますが、Oracleコンポーネントは、ユーザー・パスワード・ベリファイアをauthPassword
、orclPasswordVerifier
またはorclpassword
属性に格納します。表29-1に、Oracleコンポーネントで使用する各属性を示します。
表29-1 ユーザー・エントリにパスワード・ベリファイアを格納するための属性
属性 | 説明 |
---|---|
パスワードが、ディレクトリに対してユーザー認証を行うために使用するパスワード 複数の異なるアプリケーションで、ディレクトリに使用したクリアテキスト・パスワードと同じパスワードの入力をユーザーに要求できます。ただし、各アプリケーションでは、異なるアルゴリズムを使用してそのパスワードがハッシュされる場合があります。この場合は、同じクリアテキスト・パスワードが、複数の異なるパスワード・ベリファイアのソースとなります。 この属性は複数値の属性であるため、異なるアプリケーションがこのユーザーのクリアテキスト・パスワードに対して使用する他のすべてのベリファイアを格納できます。 |
|
|
パスワードが、ディレクトリに対してユーザー認証を行うために使用するパスワード
|
|
エンタープライズ・ユーザー用の03LOGONベリファイアのみを格納するための属性。03LOGONベリファイアは、 Oracle Internet Directoryをインストールすると、デフォルトではルートOracleコンテキストにデータベース・セキュリティ・プロファイルのエントリが作成されます。このエントリの存在によって、 |
これらの属性の型には、属性サブタイプとしてappID
があります。この属性サブタイプで特定のアプリケーションを一意に識別します。たとえば、appID
はアプリケーション・エントリのORCLGUID
にできます。この属性サブタイプは、アプリケーションのインストール時に生成されます。
図29-2では、様々なOracleコンポーネントがそれぞれのパスワード・ベリファイアをOracle Internet Directoryに格納しています。Oracle Single Sign-Onでは、ディレクトリに対するパスワードと同じパスワードを使用するため、パスワードはauthPassword
属性に格納されます。その他のアプリケーションでは、ディレクトリに対するパスワードとは異なるパスワードを使用するため、それぞれのベリファイアがorclPasswordVerifier
属性に格納されます。
次の記述は、アプリケーション固有のベリファイア・プロファイルの例です。共通のベリファイア・フレームワークを使用しないことを選択したアプリケーションでは、次の例のように、固有のベリファイア・プロファイル・エントリを作成する必要があります。orclappid
はアプリケーション・コンテナのGUIDに設定され、ベリファイア属性authpassword
およびorclpasswordverifier
のサブタイプとしても使用されます。
dn: cn=IFSVerifierProfileEntry,cn=IFS,cn=Products,cn=OracleContext,o=Oracle,dc=com objectclass:top objectclass:orclpwdverifierprofile cn:IFSVerifierProfileEntry orclappid:8FF2DFD8203519C0E034080020C34C50 orclpwdverifierparams;authpassword: crypto:SASL/MDS $ realm:dc=com orclpwdverifierparams;orclpasswordverifier: crypto:ORCLLM orclpwdverifierparams;authpassword: crypto:ORCLWEBDAV $ realm:dc=com $ usernameattribute: mail $ usernamecase: lower $ nodomain: TRUE
SASL/MD5およびORCLWEBDAVベリファイアは、ユーザー名、レルムおよびパスワードを使用して生成されます。使用するユーザー名属性は、ベリファイア・プロファイル・エントリで指定できます。ユーザー名は大文字でも小文字でも指定できます。ORLWEBDAVベリファイアは、ユーザー名にアイデンティティ管理レルムの名前を追加して生成されます。レルムの名前を追加して生成する必要がない場合、ベリファイア・プロファイル・エントリではnodomain: TRUE
を指定する必要があります。
前述の例では、ORCLWEBDAVベリファイアは、レルムの名前を追加せずにmail
属性の値を使用して生成されます。また、ユーザー名はベリファイアが生成される前に小文字に変換されます。
各Oracleコンポーネントのプロファイルを作成する必要をなくし、すべてのコンポーネントでパスワード・ベリファイアを共有できるようにするために、Oracle Internet Directoryにはパスワード・ベリファイアのデフォルト・セットが用意されています。デフォルトのベリファイアには、MD5、MD5-IFS(ユーザー名がニックネーム属性の値に設定され、レルムがAuthorized_Usersに設定されたSASL/MD5)、WEBDAV、ORCLLMおよびORCLNTのタイプがあります。
2つのプロファイル・エントリが必要です。1つは数値のみを使用する個人識別番号(PIN)を使用するアプリケーション用、もう1つは英数字のパスワードを使用するアプリケーション用です。
PINベースのアプリケーション用ベリファイア(たとえば、OracleAS Unified Messagingのボイス・メール)は、orclpasswordverifier;orclcommonpin
属性に格納されます。サブタイプorclcommonpin
は、数値のPINと英数字のパスワードを区別するために使用されます。数値のPINを使用するアプリケーションでは、orclpasswordverifier;orclcommonpin
属性に対して直接に問合せや比較ができます。
英数字パスワード・ベースのアプリケーション用ベリファイアは、次のいずれかに格納されます。
authpassword;orclcommonpwd
属性: アプリケーションがそのベリファイアとuserpassword
属性を同期する必要がある場合
orclpasswordverifier;orclcommonpwd
属性: userpassword
属性との同期が必要ない場合
サブタイプorclcommonpwd
は、数値のPINと英数字のパスワードを区別するために使用されます。サブタイプが付いたベリファイア属性は、問合せが可能です。
これらのプロファイル・エントリには、サブスクライブ・アプリケーションのリストも含まれ、これらのアプリケーションは、プロファイル・エントリ内でuniquemember
属性の値として指定されます。デフォルトでは、Oracle Single Sign-OnのアイデンティティのDNがサブスクライブ・アプリケーションの1つになっています。これは、Oracle Single Sign-Onが、すべてのパートナ・アプリケーションのプロキシ・メンバーであることを示しています。Oracle Single Sign-Onに基づいていないすべてのアプリケーションで、適切なプロファイル・エントリ内のuniquemember
属性にアイデンティティ(DN)を追加する必要があります。
次に、プロファイル・エントリの例を示します。
Cn=defaultSharedPwdProfileEntry, cn=common, cn=products, cn=oraclecontext Objectclass: orclpwdverifierprofile Objectclass: orclcommonpwdprofile Cn: defaultSharedPwdProfileEntry Orclappid: orclcommonpwd Orclpwdverifierparams;authpassword: crypto:SASL/MD5 $ realm:Authorized_Users Orclpwdverifierparams;authpassword: crypto:ORCLWEBDAV $ realm:Authorized_Users Orclpwdverifierparams;authpassword: crypto:ORCLLM Orclpwdverifierparams;authpassword: crypto:ORCLNT Orclpwdverifierparams;orclpasswordverifier: crypto:SSHA Uniquemember: cn=SSO,cn=Products,cn=OracleContext Uniquemember: cn=IFS,cn=Products,cn=OracleContext Cn=defaultSharedPINProfileEntry, cn=common, cn=products, cn=oraclecontext Objectclass: orclpwdverifierprofile Objectclass: orclcommonpwdprofile Cn: defaultSharedPinProfileEntry Orclappid: orclcommonpin Orclpwdverifierparams;orclpasswordverifier: crypto:MD5 Orclpwdverifierparams;orclpasswordverifier: crypto:SSHA Uniquemember: cn=SSO,cn=Products,cn=OracleContext Uniquemember: cn=Unified Messaging,cn=Products,cn=OracleContext
PINベースのアプリケーションでは、authpassword
はオプションではありません。orclpasswordverifier
属性が使用されます。
図29-3に、Oracleコンポーネントに対するパスワード検証の例を示します。この例のOracleコンポーネントは、パスワード・ベリファイアをディレクトリに格納します。
ユーザーは、ユーザー名とクリアテキスト・パスワードを入力して、アプリケーションへのログインを試みます。
アプリケーションは、クリアテキスト・パスワードをディレクトリ・サーバーに送信します。アプリケーションは、パスワード・ベリファイアをディレクトリに格納した後、ディレクトリ・サーバーに対して、このパスワード値をディレクトリ内の対応するベリファイアと比較するようにリクエストします。
ディレクトリ・サーバーは、次のように動作します。
特定のアプリケーションに指定されているハッシング・アルゴリズムを使用して、パスワード・ベリファイアを生成します。
次に、生成したパスワード・ベリファイアをディレクトリ内の対応するパスワード・ベリファイアと比較します。比較操作が成功した場合、アプリケーションは、ベリファイア属性のサブタイプとしてそのappID
を指定する必要があります。次に例を示します。
ldapcompare -p 3060 -D "DN_of_the_appplication_entity" -q \ -b "DN_of_the_user" -a orclpasswordverifier; appID \ -v password_of_the_user
比較操作の結果をアプリケーションに通知します。
アプリケーションは、ディレクトリ・サーバーからのメッセージに従って、ユーザーを認証または否認します。
アプリケーションは、比較操作を使用しない場合、次のように動作します。
ユーザーが入力したクリアテキスト・パスワードをハッシュします。
ユーザーが入力したクリアテキスト・パスワードのハッシュ値をディレクトリから取り出します。
クライアントが応答するユーザーへのチャレンジを開始します。レスポンスが適切な場合、アプリケーションはユーザーを認証します。
Oracle Directory Services Managerを使用して、パスワード・ハッシング・スキームを含むパスワード検証プロファイル・エントリを表示および変更できます。
アプリケーションのパスワード・ベリファイアを表示および変更する手順は、次のとおりです。
「Oracle Directory Services Managerの起動」の説明に従って、Oracle Directory Services Managerを起動し、Oracle Internet Directoryサーバーに接続します。
タスク選択バーで、「セキュリティ」を選択します。
左側のペインで「パスワード検証」を展開します。すべてのパスワード・ベリファイアが左側のペインに表示されます。
表示するパスワード・ベリファイアを選択します。右側のペインには、「パスワード検証プロファイル」タブ・ページが表示されます。
パスワード・ベリファイアの生成に使用するハッシング・アルゴリズムを変更できます。「パスワード検証プロファイル」ダイアログ・ボックスで、「Oracleパスワード・パラメータ」フィールドにハッシング・アルゴリズムを指定します。構文は次のとおりです。
crypto:hashing_algorithm
たとえば、ORCLLMハッシング・アルゴリズムを使用している場合、次のように入力します。
crypto:ORCLLM
たとえば、SASL/MD5を使用している場合、次のように入力できます。
crypto:SASL/MD5 $ realm:dc=com
コマンドライン・ツールを使用して、パスワード・ベリファイア・プロファイルを表示および変更できます。
アプリケーションのパスワード・ベリファイアを表示するには、パスワード・ベリファイア・プロファイルの識別名を指定して検索を実行します。
この例では、アプリケーションのパスワード検証プロファイル・エントリのハッシング・アルゴリズムを変更します。このパスワード・ベリファイアは、ユーザーのディレクトリ・パスワードと同期しています。次のように入力します。
ldapmodify -D "cn=orcladmin" -q -p 3060 -h my_host -v -f file.ldif
この場合、file.ldif
には次が含まれます。
dn: cn=MyAppVerifierProfileEntry,cn=MyApp,cn=Products,cn=OracleContext, o=my_company,dc=com changetype: modify replace: orclPwdVerifierParams orclPwdVerifierParams;authPassword: crypto:SASL/MD5 $ realm:dc=com
前述のパスワード・ベリファイアは、静的パスワード・ベリファイアです。つまり、通常アプリケーションのインストール中に、事前構成されたパラメータから生成されたベリファイアです。一部のアプリケーション(Oracle Calendar、Oracle EmailおよびOracle Wireless and Voiceなど)では、Oracle Internet Directoryが動的パスワード・ベリファイアを生成する必要があります。
Oracle Internet Directoryは、アプリケーションが動的パスワード・ベリファイアをリクエストした場合に、これを生成します。動的ベリファイアは、アプリケーションの実行時に使用可能になるアプリケーション・パラメータに基づいています。
Oracle Internet Directoryが動的パスワード・ベリファイアを生成するには、以前に可逆暗号化形式で格納されたユーザー・パスワードが必要です。Oracle Internet Directoryでは、これらの値を構成属性orclrevpwd
およびorclunsyncrevpwd
に格納します。userpassword
に基づいて暗号化された値は、orclrevpwd
パラメータに格納されます。Oracle Calendarで使用される数値のPINなど、userpassword
以外のパスワードに基づいて暗号化された値は、パラメータorclunsyncrevpwd
に格納されます。
userpassword
を使用し、動的パスワード・ベリファイアを必要とするアプリケーションをデプロイする場合、Oracle Internet Directoryがorclrevpwd
パラメータを生成することを確認する必要があります。レルムのパスワード・ポリシー・エントリの属性orclpwdencryptionenable
が1
に設定されている場合、ユーザーをプロビジョニングすると、Oracle Internet Directoryは属性orclrevpwd
を生成します。したがって、ユーザーをプロビジョニングする前に、orclpwdencryptionenable
を1
に設定する必要があります。
orclpwdencryptionenable
の値を確認するには、ldapsearch
を使用して、確認対象のエントリの有効なpwdpolicy
エントリを問い合せます。たとえば、デフォルトのpwdpolicy
を問い合せる場合、次のように入力します。
$ ldapsearch -p port -q -D "cn=orcladmin" \
-b "cn=default,cn=pwdPolicies,cn=Common,cn=Products,cn=OracleContext" \
-s base "objectclass=*"
orclpwdencryptionenable
が表示されないか0
の場合、ldapmodifyと次のようなLDIFファイルを使用して1
に設定します。
dn: cn=DefaultSharedPinProfileEntry,cn=Common,cn=Products,cn=Oraclecontext cn: DefaultSharedPinProfileEntry orclappid: orclpwdencryptionenable orclpwdencryptionenable: 1
orclpwdencryptionenable
を設定する前にユーザーをプロビジョニングした場合には、かわりにすべてのユーザーのユーザー・パスワードをリセットし、暗号化された値を生成する必要があります。
数値のPINを使用し、動的パスワード・ベリファイアを必要とするアプリケーションをデプロイする場合、orclunsyncrevpwd
に格納される値を生成するために、Oracle Internet Directoryが暗号タイプ3DES
を使用可能であることを確認する必要があります。3DES
を、ルートOracleコンテキスト下の共通ベリファイア・プロファイル・エントリの属性orclpwdverifierparams;orclpasswordverifier
の値として指定する必要があります。このエントリのデフォルトの識別名はcn=DefaultSharedPINProfileEntry,cn=Common,cn=Products, cn=OracleContext
です。値を設定するには、次のLDIFファイルを使用します。
dn: cn=DefaultSharedPinProfileEntry,cn=Common,cn=Products,cn=Oraclecontext cn: DefaultSharedPinProfileEntry orclappid: orclcommonpin orclpwdverifierparams;orclpasswordverifier: crypto:MD5 orclpwdverifierparams;orclpasswordverifier: crypto:3DES
ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile