ODBC ユーザ ディレクトリ接続の設定

目次
casso127jpjp
目次
2
ポリシー サーバが ODBC ユーザ ストアと通信できるようにするユーザ ディレクトリ接続を設定できます。
Microsoft SQL Server データベースを監査ログとユーザ ディレクトリ用に使用できます。監査ログのキャッシュを有効にした場合、ポリシー サーバはログ メッセージをキューに入れるため高負荷時にパフォーマンスが低下する可能性があります。この問題を解決するには、多数のユーザがアクセスするリソースに関連付けられたレルムの非同期監査をオンにします。
注:
以下の CA SSO データ ストアの設定中には SQL Server 用の TCP/IP ネットワーク プロトコルが有効になるようにしてください。
  • PolicyStore
  • UserStore
  • KeyStore
  • SessionStore
SQL Server データ ソースの設定
ODBC ディレクトリ接続を作成する前に、ポリシー サーバに SQL サーバ データ ソースを作成します。
以下の手順に従います。
Windows システム
  1. 以下のいずれかを実行します。
    • サポートされている 32 ビット Windows オペレーティング システムの場合、ODBC データ ソース(32 ビット)管理ツールを起動します。
    • サポートされている 64 ビット Windows オペレーティング システムの場合は、ODBC データ ソース(64 ビット)管理ツールです。
  2. [システム DSN]タブをクリックします。
  3. [追加]をクリックします。
  4. SiteMinder® SQL Server Wire Protocol を選択して[完了]をクリックします。
  5. [データ ソース名]フィールドにデータ ソース名を入力します。
    注:
    指定したデータ ソース名を書き留めます。この情報は、ユーザ ストアとしてデータベースを設定するために必要です。
  6. [サーバ]フィールドに SQL Server ホスト システムの名前を入力します。
  7. [データベース名]フィールドにデータベース名を入力します。
  8. [OK]をクリックします。
UNIX システム
  1. siteminder_home
    /db に移動します。
    siteminder_home は、ポリシー サーバ インストール ディレクトリのパスです。
  2. sqlserverwire.ini ファイルををコピーし、名前を
    system_odbc.ini
    に変更します。
  3. system_odbc.ini ファイルを開きます。
  4. [SmSampleUsers Data Source]の下にある以下の設定を更新します。
    • nete_ps_root: ポリシー サーバ インストール ディレクトリの明示的なパスを指定します。
    • Database: SQL Server データベースのインスタンス名を指定します。
    • myhost: SQL Server データベースの IP アドレスを指定します。
      注:
      データ ソース名は SmSampleUsers Data Source です。
  5. [ODBC]の下にある以下の設定を更新します。
    • nete_ps_root: ポリシー サーバ インストール ディレクトリの明示的なパスを指定します。
  6. ファイルを保存します。
ODBC ユーザ ディレクトリ接続の確立
以下の手順に従います。
  1. 管理 UI にログインし、[インフラストラクチャ]、[ディレクトリ]の順にクリックします。
  2. [ユーザ ディレクトリ]をクリックします。
  3. [ユーザ ディレクトリの作成]をクリックします。
    [ユーザ ディレクトリの作成]画面が表示されます。
  4. ディレクトリの名前を指定します。
  5. [ネームスペース]リストから[ODBC]を選択します。
  6. [データ ソース]フィールドに、ポリシー サーバ システムに作成したデータ ソースの名前を入力します
  7. ディレクトリ セクションで追加の設定を行います。
    注:
    ポリシー サーバが FIPS モードで動作し、ポリシー サーバと通信する際にディレクトリ接続に安全な SSL 接続を使用する場合、ポリシー サーバとディレクトリ ストアが使用する証明書は FIPS 準拠である必要があります。
  8. (オプション)データベースの管理者認証情報を入力します。
    1. [認証情報が必要]を選択します。
    2. 管理者アカウントの認証情報を入力します。
      注:
      ユーザ名は、ユーザ ディレクトリ データを含むテーブルを所有するユーザと一致する必要があります。たとえば、SmSampleUsers 方式を使用する場合、SmUser、SmUserGroup、および SmGroup のテーブルを所有するユーザの名前を入力します。管理者アカウントには、ユーザ ディレクトリの読み取りまたは読み取り/書き込みの権限が必要です
  9. SQL クエリ方式セクションで[新規]をクリックします。
    1. タイプ「SQL クエリ方式」のオブジェクトの作成
      ]を選択し、[OK]をクリックします。
    2. SmSampleUsers クエリ スキームを使用するために[OK]をクリックします。
  10. (オプション)[ユーザ属性]領域で
    Single Sign-On
      用に予約されているユーザ ディレクトリ プロファイル属性を指定します。
  11. (オプション)[属性マッピング リスト]領域の[作成]をクリックして、ユーザ属性マッピングを設定します。
  12. [サブミット]をクリックします。
ユーザ ディレクトリ接続が作成されます。
注:
新規ユーザ ディレクトリ接続は、ポリシー サーバが管理上の変更を適用するまで(デフォルトでは 60 秒ごと)、ポリシー サーバに使用可能になりません。これは、ユーザ ディレクトリ接続が変更された場合も同様です。
SQL Server ユーザ ストアに関するトラブルシューティング
SQL Server ユーザ ストアは、大文字と小文字を区別しません。また、ユーザのパスワードの末尾の余分な空白は無視されます。このため、ユーザは、大文字/小文字の区別がないパスワードや末尾に余分な空白のあるパスワードを入力して、保護されているリソースへのアクセス権を入手できるので、問題が発生します。たとえば、パスワード ポリシーで、ユーザのパスワードが大文字/小文字の区別がある「ABCD」でなければならないことが設定されていても、ユーザが「ABcd」と入力すると、SQL Server はアクセスを許可します。また、パスワード ポリシーで、ユーザのパスワードが「 A B C」でなければならないように設定されていても、ユーザが「 A B C 」と入力すると、SQL Server は末尾の余分な空白を無視して、アクセスを許可します。
これらの 2 つの問題の解決方法を、以下に示します。
SQL Server の大文字/小文字の区別に関する問題
SQL Server データベースは適切な照合を実行せず、パスワードで大文字/小文字の区別を認識しません。
解決方法 1
SQL Server ユーザ ストアで大文字/小文字が区別されるようにするには、データベースをインストールするときにテーブル作成で適切な照合を選択します。
照合の詳細については、以下を参照してください。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/instsql/in_collation_3oa6.asp
解決方法 2
デフォルトの照合が指定された SQL Server がすでにインストール済みで、データベースがパスワードの大文字/小文字を認識しない場合は、ユーザ ストアのテーブルを作成するときに適切な照合を作成します。
照合を指定するには、以下のスクリプトの
いずれか
を変更して、インポートします。
  • siteminder_install
    \db\SQL\smsampleusers_sqlserver.sql
  • siteminder_install
    \db\SQL\smsampleusers_sqlserver_upgrade.sql
これらの 2 つのスクリプト ファイルは、デフォルトの米国英語のローカライゼーションを使用します。
smsampleusers_sqlserver.sql スクリプト ファイル
smsampleusers_sqlserver.sql スクリプト ファイル内で、太字で強調された以下の行を変更します。
CREATE TABLE SmGroup ( GroupID int NOT NULL, Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , PRIMARY KEY (GroupID) ) DROP TABLE SmUser go CREATE TABLE SmUser ( UserID int NOT NULL, Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, Password nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, LastName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, FirstName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, EmailAddress nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL, TelephoneNumber nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , Disabled nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , PIN nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL , Mileage int NOT NULL, PasswordData varchar(2000) NOT NULL, PRIMARY KEY (UserID) ) go
スクリプトを変更した後、SQL Server データベースにそのスクリプトをインポートします。
重要:
既存のデータはすべてバックアップしてください。このスクリプトを実行すると、既存のデータが削除され、新しいテーブルが作成されます。
smsampleusers_sqlserver_upgrade.sql スクリプト ファイル
太字で強調された以下の行は、smsampleusers_sqlserver_upgrade.sql スクリプト ファイルに加える必要がある変更です。
/* Upgrade table SmGroup*/ ALTER TABLE SmGroup ALTER COLUMN Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go /* Upgrade table SmUser*/ ALTER TABLE SmUser ALTER COLUMN Name nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN Password nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN LastName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN FirstName nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN EmailAddress nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN TelephoneNumber nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN Disabled nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go ALTER TABLE SmUser ALTER COLUMN PIN nvarchar(255) COLLATE Latin1_General_CS_AS NOT NULL go
スクリプトを変更した後、SQL Server データベースにそのスクリプトをインポートします。
重要:
既存のデータはすべてバックアップしてください。このスクリプトを実行すると、既存のデータが削除され、新しいテーブルが作成されます。
SQL Server はパスワードの末尾の空白を無視する
SQL Server は、比較する文字列に空白を埋め込んで、文字列の長さを等しくします。
解決方法
SQL Server がデータベースに格納されているパスワードの末尾の空白を認識できるようにするには、管理 UI を使用して、ODBC クエリ方式オブジェクトの[ユーザの認証]クエリを変更します。SQL Server が埋め込みまたは切り取りを行わずに文字列を比較できるようにするには、
=
演算子の代わりに、LIKE 述部を組み込みます。LIKE 述部式の右側にある値の末尾に空白があっても、SQL Server は、比較を実行する前に、長さが同じになるように 2 つの値に空白を埋め込みません。認証クエリの例を、以下に示します。
select Name from SmUser where Name = '%s' and Password LIKE '%s'
重要:
パスワード照合クエリに LIKE 述部式を使用すると、セキュリティ ホールが開くことがあります。ユーザがパスワードに「%」を使用すると、SQL Server は、その文字を LIKE 述部のワイルドカード文字として扱うため、このユーザは複数のパスワードを使用して認証できるようになります。
以下の点に注意してください。
  • SDK を使用して ODBC クエリ方式オブジェクトを作成する場合は、Sm_PolicyApi_ODBCQueryScheme_t オブジェクトの pszQueryAuthenticateUser 属性を使用して、認証クエリを指定できます。
  • Perl スクリプト インターフェースを使用して ODBC クエリ方式オブジェクトを作成する場合は CreateODBCQueryScheme() API を呼び出す際に認証クエリを指定できます。