このチェックリストは、組織内でデータへのアクセスを制限する方法を確認するのに役立ちます。このチェックリストを使用して、SQL Server データベース エンジンに保存されている情報にユーザーがアクセスする方法を定期的に監査してください。
SQL Server インスタンスへのアクセス
以下の項目は、データベース エンジンのインスタンス全体に関係します。
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- ほとんどのログインに対して Windows グループを使用したアクセスを許可していますか。
ヒント: Windows グループを使用してデータベース エンジンへのアクセスを構成すると、アクセスの管理と保守が容易になります。ログインの詳細については、「プリンシパル (データベース エンジン)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- データベース エンジンから不要なログインや現在使用されていないログインを削除しましたか。
ヒント: 定期的に手動で確認することが必要になる場合があります。主に Windows グループを使用してアクセスを有効にすると、この作業を容易に行うことができます。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- 最小限の特権の原則を実装しましたか。
ヒント: プリンシパル (ログイン、ユーザー、およびロール) では、作業を実行するためにアクセスする必要があるデータベース オブジェクトへの権限のみが許可される必要があります。ユーザーが日常的に sa などの管理者アカウントを使用して接続することや、Web ページ、カスタム アプリケーション、SSIS パッケージから管理者アカウントを使用して接続することを許可しないでください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- 追加の権限を付与せずにシステム メタデータを表示するために、オブジェクト レベル、スキーマ レベル、データベース レベル、またはサーバー レベルで VIEW DEFINITION 権限を選択的に許可しましたか。
ヒント: 詳細については、「GRANT (Transact-SQL)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- リンク サーバーを使用してリモート サーバーを置き換えましたか。
ヒント: 詳細については、「リモート サーバーの構成」および「サーバーのリンク」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- リンク サーバーへのパススルー認証が必要な場合、制約付き委任を使用しましたか。
ヒント: 詳細については、「sp_addlinkedsrvlogin (Transact-SQL)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- (必要な場合を除いて) サーバーを経由するアドホック クエリを無効にしましたか。
ヒント: 詳細については、「Ad Hoc Distributed Queries オプション」を参照してください。
|
ユーザー ID の管理
以下の項目は、各データベースでの設定に関係します。
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- 匿名ユーザーで必要な場合を除いて、guest ユーザー アカウントは各データベースで無効になっていますか。
ヒント: SQL Server Management Studio または Transact-SQL を使用してアカウントを無効にします。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- ユーザーは必要なデータベースへのアクセス権のみを持っていますか。
ヒント: 定期的に手動で確認することが必要になる場合があります。主に SQL Server ロールを使用してアクセスを有効にすると、この作業を容易に行うことができます。詳細については、「サーバー レベルのロール」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- ほとんどのユーザーに、SQL Server ロールを使用してアクセスが許可されていますか。
ヒント: サーバー ロールとデータベース ロールを使用してアクセスを構成すると、アクセスの保守が容易になります。ロールの詳細については、「データベース レベルのロール」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- SQL Server エージェントで資格情報を使用して、SQL Server エージェント サービス アカウントの特権が調整されるのではなく、特定の特権を必要とするジョブ ステップが実行されますか。
ヒント: 詳細については、「資格情報 (データベース エンジン)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- SQL Server エージェントのユーザーがさまざまな Windows 資格情報を必要とするジョブを実行する必要がある場合、それらの Windows 資格情報に、このタスクを実行するのに十分な権限が許可されているプロキシ アカウントを割り当てましたか。
ヒント: 詳細については、「プロキシを作成する方法 (SQL Server Management Studio)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- ストアド プロシージャ、関数、トリガー、またはアセンブリなどのモジュール内にデータベース オブジェクトへのアクセスをカプセル化しましたか。
ヒント: あらかじめ定義されたモジュールにアクセスを制限すると、悪意のあるユーザーが任意のコードを実行しにくくなります。詳細については、「ストアド プロシージャについて」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- モジュールで、既定のコンテキストを使用するのではなく、実行コンテキストを明示的に設定しましたか。
ヒント: 詳細については、「モジュールでの EXECUTE AS の使用」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- 改ざんを防止するために、モジュールに署名が行われていますか。
ヒント: 詳細については、「モジュール署名 (データベース エンジン)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- アプリケーション ロールではなく、USER WITHOUT LOGIN を使用していますか。
ヒント: 詳細については、「SQL Server 2005 のセキュリティに関するベスト プラクティス - 運用作業と管理作業」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- SETUSER ではなく、EXECUTE AS を使用していますか。
ヒント: 詳細については、「EXECUTE AS と SETUSER」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- アプリケーション ロールを EXECUTE AS に置き換えましたか。
ヒント: 可能な場合は、EXECUTE AS … WITH NO REVERT を使用します。ID の変更を入れ子にする場合は、EXECUTE AS … WITH COOKIE オプションを使用します。詳細については、「EXECUTE AS (Transact-SQL)」を参照してください。
|
オブジェクトへのアクセス
以下の項目は、データベース オブジェクトへのアクセスに関係します。
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- public サーバー ロールと public データベース ロールに、いくつかの権限が (ある場合は) 許可されていますか。
ヒント: ログインとユーザーはすべて public ロールのメンバーであり、削除できません。これらのロールの権限はごく限られています。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- 類似しているデータベース オブジェクトが同じスキーマにまとめられていますか。
ヒント: ビジネス要件に基づいてスキーマを作成します。dbo スキーマではなく、これらのカスタム スキーマを使用します。詳細については、「スキーマ (データベース エンジン)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- スキーマ レベルで所有権と権限を設定して、データベース オブジェクトのセキュリティを管理しますか。
ヒント: 詳細については、「GRANT (スキーマ権限の許可) (Transact-SQL)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- すべてのスキーマを dbo が所有するのではなく、スキーマごとに個別の所有者が存在しますか。
ヒント: すべてのスキーマの所有者が同じである場合、組み合わせ所有権によって必要な権限チェックが実行されないことがあります。詳細については、「所有権の継承」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- 手続きに追加の特権が必要な場合、手続き型コードのコード署名を使用しますか。
ヒント: 詳細については、「モジュール署名 (データベース エンジン)」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- TRUSTWORTHY データベース オプションは OFF に設定されていますか。
ヒント: ON に設定すると、権限借用コンテキストを使用するデータベース モジュール (ユーザー定義関数やストアド プロシージャなど) から、データベース外部のリソースにアクセスできます。TRUSTWORTHY の設定を変更するには、ALTER DATABASE ステートメントを使用します。詳細については、「TRUSTWORTHY データベース プロパティ」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- モジュールによって SQL インジェクションを回避する措置が講じられますか。
ヒント: 詳細については、「SQL インジェクション」を参照してください。
|
![ブール値フィールド アイコン ブール値フィールド アイコン](images/ff848751.boolean_icon(ja-jp,sql.105).gif) |
- (モジュール内にアクセスをカプセル化するのではなく) データベースへのアドホック アクセスが許可されている場合、アプリケーションによって SQL インジェクションを回避する措置が講じられますか。
ヒント: 詳細については、次のリンクを参照してください。
|