SQL Server のセキュリティ
SQL Server のアカウントおよびロールは、Windows Server AppFabric のセキュリティで重要な役割を果たします。AppFabric では、これらの SQL Server のエンティティを使用して、監視操作のデータやワークフローの永続化に関連する状態制御データを格納する記憶域やテーブルへのアクセスを制御します。AppFabric には、データベースのセキュリティ管理を支援するツールは用意されていません。アカウントとロールを作成したり、データベース オブジェクトに対する適切なアクセス許可の表示、操作、割り当てを行ったりするには、インストールされているデータベースに付属するツールを使用します。SQL Server の場合は、SQL Server Management Studio を使用します。
AppFabric では、SQL Server のログインおよびロールを使用して、永続化ストアや監視ストアおよびストアド プロシージャなどのアセットへのアクセスを管理します。永続化スキーマおよび監視スキーマの読み取り、書き込み、およびこれらに対する管理操作を実行できるユーザーを決定するセキュリティ ポリシーは、テーブルやストアド プロシージャに対するアクセス許可を通じて適用されます。各スキーマは、それぞれ独自のセキュリティ ポリシーによって保護されます。
SQL Server 認証モードと AppFabric
SQL Server には、AppFabric データベース サーバーへの認証をセキュリティで保護するために 2 つの方法が用意されています。
Windows 認証。 これは、既定で提供される Windows 認証モードです。これは、SQL Server で最もセキュリティが高い認証モードです。Windows 認証モードが構成されている場合、SQL Server では Windows のセキュリティを使用して、Windows オペレーティング システムを実行する要求元のユーザー アカウントのアカウントおよびパスワードを検証します。
SQL Server 認証。 これは、SQL Server 認証モードで提供されます。これは、明示的なユーザー アカウントとパスワードを使用して SQL Server にアクセスする必要があるアプリケーションやユーザーとの下位互換性のためにのみ存在しています。これは最もセキュリティの低いモードです。
AppFabric では SQL Server 認証も使用できますが、明示的なユーザー アカウント名とパスワードを構成ファイルから接続文字列に埋め込んで渡すことは、セキュリティのベスト プラクティスとしてはお勧めできません。SQL Server で、Windows 認証モードを使用し、SQL Server 認証モードを使用しないように構成することを強くお勧めします。
SQL Server 認証モードを使用する必要がある場合や、パスワードを接続文字列に格納する必要がある SQL Server 以外のプロバイダーを使用している場合は、暗号化された接続文字列を使用することをお勧めします。AppFabric では構成ファイルの暗号化されたセクションを処理できないので、暗号化された接続文字列を AppFabric のツールを使用して表示または追加することはできません。
構成ファイルの一部を暗号化して AppFabric コンピューター上で構成ファイルをセキュリティで保護する必要がある場合は、ASP.NET IIS 登録ツール (Aspnet_regiis.exe) を使用してください。このツールを使用すると、AppFabric ユーザー インターフェイスの外部で、構成ファイルのセキュリティ上重要なセクションを暗号化 (-pe オプション) できます。後でこれらのセクションを表示または変更する必要がある場合は、–pd オプションを使用して暗号化を解除できます。セクションの暗号化を解除することによって、AppFabric のツールでセクションを表示、変更し、構成ファイルに変更を保存することができ、AppFabric 以外のツールを使用して再びセクションを暗号化できます。ASP.NET IIS 登録ツールの使用方法の詳細については、「ASP.NET IIS 登録ツール (Aspnet_regiis.exe)」 (https://go.microsoft.com/fwlink/?LinkId=169163) を参照してください。
SQL Server のログイン
SQL Server のログインには、SQL Server コンピューターにログオンするためのユーザー アカウントとパスワードが必要です。これはアクセスの権限、Windows のセキュリティ用語の認証と考えることができます。SQL Server では、AppFabric データベース リソースにアクセスして管理しようとするセキュリティ プリンシパルを識別するために、Windows 統合認証を使用します。Windows 統合認証を使用して SQL Server に接続するには、アプリケーションを実行している Windows ID を指定する必要があります。また、この ID に、SQL Server データベースに対する適切なアクセス権が付与されていることを確認する必要があります。
データベース スキーマまたはデータに対して構成または操作アクションを実行するには、ログイン アカウントが、適切なアクセス許可を持つ SQL Server のロールにマップされている必要があります。SQL Server のロールは、Windows グループと同様に機能します。SQL Server ロール内のログイン アカウントのメンバーシップは、ログイン アカウントがどの程度の管理アクティビティやデータベース操作を実行できるかを示します。ログイン アカウントは、複数のデータベース ロールのメンバーになることができます。
AppFabric をインストールすると、以下の SQL Server ログインが作成されます。
ログイン名 | Windows アカウント | データベース ロールのメンバーシップ |
---|---|---|
AS_Administrators |
LOCALHOST\AS_Administrators |
|
AS_Observers |
LOCALHOST\AS_Observers |
|
IIS_IUSRS |
BUILTIN\IIS_IUSRS |
|
SQL Server のデータベース ロール
SQL Server には、サーバー、アプリケーション、データベースの 3 種類のデータベース ロールがあります。念のために、ここではこれらについて簡単に説明します。AppFabric では、SQL Server のセキュリティのほとんどについて、データベース ロール モデルのみを活用しています。
SQL Server "サーバー" ロール。 SQL Server "サーバー" ロールは、サーバー レベルで、すべてのストアの外部で定義されます。SQL Server ロールはあらかじめ定義されているので、数や内容を変更することはできません。一般的なサーバー ロールの例として、sysadmin ロールがあります。このロールのメンバーシップによって、ログイン アカウントはすべてのデータベース操作を完全に制御でき、任意のストア内の SQL Server データに対してあらゆる操作を実行できます。AppFabric では、そのセキュリティ モデルにおいて、明示的にサーバー ロールを使用しません。
SQL Server "アプリケーション" ロール。 アプリケーション ロールは、特定のアプリケーションのより複雑な、カスタム セキュリティのニーズをサポートします。ストアは、共通のニーズを持つ複数のアプリケーションで使用することができ、いずれかのアプリケーションがアクセスしたときに、データのセキュリティが適用されます。AppFabric では、そのセキュリティ モデルにおいて、明示的にアプリケーション ロールを使用しません。
SQL Server "データベース" ロール。 AppFabric では、幅広くデータベース ロールを使用しています。データベース ロールには、パブリック、ユーザー定義、および固定の 3 種類があります。念のために、ここではこれらについて簡単に説明します。AppFabric では、SQL Server のセキュリティの大部分について、ユーザー定義データベース ロール モデルのみを活用しています。
SQL Server のデータベース ロールには、3 つの種類があります。
パブリック。 パブリック データベース ロールには、すべてのデータベース ユーザーの既定のアクセス許可が含まれています。したがって、AppFabric で作成されるすべてのログイン アカウントは、このロールのメンバーです。
固定。 SQL Server の "サーバー" ロール (sysadmin など) と同様に、固定データベース ロールは変更できません。サーバー レベルで存在するサーバー ロールとは異なり、データベース ロールは、各ストアのデータベース レベルで存在します。固定データベース ロールの例として db_owner があります。固定データベース ロールには、SQL Server ログイン ユーザー アカウントを追加または削除できます。
ユーザー定義。 AppFabric では、インストール時に、空のユーザー定義データベース ロールが作成されます。AppFabric インストール プログラムは、ユーザー定義データベース ロールに、Windows アカウントまたは SQL Server ログイン アカウントを明示的には挿入しません。SQL Server 管理ツールを使用して、明示的にアカウントを追加する必要があります。
AppFabric では、SQL Server データベース ロールを使用して、監視データ ストアや永続化データ ストアへのアクセスを制御します。新しい AppFabric 監視データ ストアまたは永続化データ ストアを初期化するときには、インストール中に複数のユーザー定義データベース セキュリティ ロールが作成されます。次の表に、これらのロールが、前のセクションで説明した SQL Server ログインにどのようにマップされるかを示します。
SQL Server ユーザー定義ロール | スキーマ | マップされるログイン | 権限 |
---|---|---|---|
ASMonitoringDbAdmin |
監視 |
AS_Administrators |
ステージング テーブルへの書き込み、イベント ビューからの読み取り、および削除とアーカイブのストアド プロシージャの呼び出し |
ASMonitoringDbReader |
監視 |
AS_Administrators および AS_Observers |
イベント ビューからの読み取り |
ASMonitoringDbWriter |
監視 |
AS_Administrators |
ステージング テーブルへの書き込みおよびインポート プロシージャの呼び出し |
Microsoft.ApplicationServer.DurableInstancing.WorkflowAdministrators |
永続化 |
AS_Administrators |
ストアのコマンド キューへのコントロール コマンドの登録 |
System.Activities.DurableInstancing.InstanceStoreObservers |
永続化 |
AS_Administrators および AS_Observers |
インスタンス ストア ビューからの読み取り |
System.Activities.DurableInstancing.InstanceStoreUsers |
永続化 |
BUILTIN\IIS_IUSRS |
永続化に関連するストアド プロシージャの呼び出し |
Microsoft.ApplicationServer.DurableInstancing.WorkflowManagementServiceUsers |
永続化 |
AS_Administrators |
ストアのコマンド キューからのコントロール コマンドの除去 |
System.Activities.DurableInstancing.WorkflowActivationUsers |
永続化 |
AS_Administrators |
アクティブ化できるワークフロー インスタンスをインスタンス ストアに照会します。 |
Active Directory を使用している場合は、ドメイン アカウントを使用して AppFabric セキュリティ ロールを設計し、複数のコンピューターにまたがるセキュリティを簡素化することを強くお勧めします。AppFabric 管理者は、Active Directory を使用して、管理者ロールとオブザーバー ロール用に 2 つのカスタム グループ アカウントを明示的に作成できます。たとえば、これらのグループ アカウントに "DOMAIN\MyAppFabricAdmins" と "DOMAIN\MyAppFabricObservers" という名前を付けたとします。次に、各コンピューターで両方のグループに適切なアクセス許可を付与するために、手動で "DOMAIN\MyAppFabricAdmins" グループを LOCALHOST\AS_Administrators グループに、"DOMAIN\MyAppFabricObservers" グループを LOCALHOST\AS_Observers グループに追加します。イベント コレクション サービスと ワークフロー管理サービスは、"DOMAIN\MyAppFabricAdmins" グループのメンバーであるドメイン アカウントの下で実行する必要があります。
セキュリティ 注意 |
---|
SQL Server を使用する AppFabric のコマンドレットは、これらの SQL Server データベース ロールを使用して、実行時の ID の認証を行います。 |
SQL Server 以外のデータベース ストア
SQL Server データベース ロールは、SQL Server に固有です。ただし、既定の SQL Server プロバイダーを使用しない場合や、独自のカスタム プロバイダーを作成することを選択した場合は、これらのロールの機能を、SQL Server 以外のストアの相当する機能にマップすることができます。
SQL Server 以外のストアの場合、ユーザー ID とパスワードを接続文字列に含めて、ストアへのアクセスをセキュリティで保護する必要があります。SQL Server 認証の場合と同様に、接続文字列に含まれるユーザー ID とパスワードをストアに渡すことはできますが、これはお勧めできません。ユーザー ID とパスワードを接続文字列で渡すことしかできない場合は、.NET Framework の適切なセキュリティ プラクティスに従って、接続文字列が暗号化されるようにしてください。
ヒント
暗号化された接続文字列を使用する場合、関連付けられた IIS アプリケーションが正しく実行されます。ただし、接続文字列が暗号化されている場合、関連する IIS マネージャー ツールは機能しません。このツールを使用するには、接続文字列の暗号化を解除し、IIS ツールを使用して構成を変更した後、再び接続文字列を暗号化する必要があります。
2011-12-05