SQL Server ユーザー偽装構成

CICS トランザクションまたはバッチ ジョブのための適切なデータベース ユーザー資格情報を見つけるために、SQL Server XA スイッチ モジュールでは、Transact-SQL EXECUTE AS 文が発行されます。EXECUTE AS 文を適切に機能させるためには、SQL Server ログイン/ユーザー ID のセキュリティ環境に GRANT IMPERSONATE 文を含める必要があります。これにより、xa_open ユーザー ID による適切なデータベース ユーザー ID の偽装が可能になります。

次に、簡単な例を示します。セキュリティおよびデータベース環境で、異なる実装が指示される場合があります。ソリューションを実装する前に、Microsoft のマニュアルで EXECUTE AS 文およびその他の関連トピックを参照してください。

  1. xa_open 文字列で示されるユーザーを作成します。
    CREATE LOGIN [XAOPENUSER] WITH PASSWORD=N'XAOPEN', 
                  DEFAULT_DATABASE=[mfdb], DEFAULT_LANGUAGE=[us_english], 
                  CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    CREATE SCHEMA [XAOPENUSER]
    CREATE USER [XAOPENUSER] FOR LOGIN [XAOPENUSER] WITH 
                  DEFAULT_SCHEMA=[XAOPENUSER]
  2. ログイン機能なしで、CICS または JCL を実行するユーザー FRITZ を作成します。
    CREATE SCHEMA [FRITZ]
    CREATE USER [FRITZ] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[FRITZ]
  3. ログイン機能ありで、CICS または JCL を実行するユーザー ALLIE を作成します。
    CREATE SCHEMA [ALLIE]
    CREATE USER [ALLIE] FOR LOGIN [ALLIE] WITH DEFAULT_SCHEMA=[ALLIE]
  4. FRITZ および ALLIE にデータベース権限を付与します。
    注: これはサンプル コードです。独自のコードには、独自のデータベース セキュリティ ポリシーに準拠するよう変更が必要になる場合があります。
    ALTER ROLE [db_owner] ADD MEMBER [SCOTT]
    ALTER ROLE [db_owner] ADD MEMBER [ALLIE]
    GRANT SELECT ON SCHEMA1.TABLE1 TO SCOTT
    GRANT ALL  ON SCHEMA1.TABLE1 TO ALLIE
  5. xa_open 文字列のユーザーが ALLIE または FRITZ になれるよう、xa_open 文字列のユーザーに偽装権限を付与します。
    注: 繰り返しますが、これはサンプル コードです。
    GRANT IMPERSONATE ON USER:: FRITZ TO XAOPENUSER;
    	GRANT IMPERSONATE ON USER:: ALLIE TO XAOPENUSER;