SQL Server での認証Authentication in SQL Server

SQL Server は、Windows 認証モードと混合モードの 2 つの認証モードをサポートしています。SQL Server supports two authentication modes, Windows authentication mode and mixed mode.

  • Windows 認証は既定の認証モードです。この SQL Server セキュリティ モデルは、Windows と緊密に統合されていることから統合セキュリティと呼ばれることもあります。Windows authentication is the default, and is often referred to as integrated security because this SQL Server security model is tightly integrated with Windows. 特定の Windows ユーザー アカウントとグループ アカウントは、SQL Server へのログインが信頼されています。Specific Windows user and group accounts are trusted to log in to SQL Server. すでに認証されている Windows ユーザーは、追加の資格情報を提示する必要はありません。Windows users who have already been authenticated do not have to present additional credentials.

  • 混合モードは、Windows による認証と SQL Server による認証の両方がサポートされます。Mixed mode supports authentication both by Windows and by SQL Server. SQL Server 内でユーザー名とパスワードのペアが管理されます。User name and password pairs are maintained within SQL Server.

重要

可能な限り、Windows 認証を使用することが推奨されます。We recommend using Windows authentication wherever possible. Windows 認証では、暗号化された一連のメッセージを使用して SQL Server のユーザーを認証します。Windows authentication uses a series of encrypted messages to authenticate users in SQL Server. SQL Server ログインを使用した場合、SQL Server のログイン名と暗号化されたパスワードがネットワーク経由で渡されるためセキュリティが低下します。When SQL Server logins are used, SQL Server login names and encrypted passwords are passed across the network, which makes them less secure.

Windows 認証では、既に Windows にログオンしているユーザーが別途 SQL Server にログオンする必要はありません。With Windows authentication, users are already logged onto Windows and do not have to log on separately to SQL Server. 次の SqlConnection.ConnectionString では Windows 認証が指定されるため、ユーザー名もパスワードもユーザーに要求させません。The following SqlConnection.ConnectionString specifies Windows authentication without requiring users to provide a user name or password.

"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;"

注意

ログインはデータベース ユーザーとは異なります。Logins are distinct from database users. ログインまたは Windows グループは、別の操作でデータベース ユーザーまたはロールにマップする必要があります。You must map logins or Windows groups to database users or roles in a separate operation. その後、ユーザーまたはロールに対してデータベース オブジェクトにアクセスするための権限を付与することになります。You then grant permissions to users or roles to access database objects.

認証のシナリオAuthentication Scenarios

通常、以下の状況では Windows 認証が最良の選択肢です。Windows authentication is usually the best choice in the following situations:

  • ドメイン コントローラーがある。There is a domain controller.

  • アプリケーションとデータベースが同じコンピューター上にある。The application and the database are on the same computer.

  • SQL Server Express または LocalDB のインスタンスを使用している。You are using an instance of SQL Server Express or LocalDB.

SQL Server のログインは、次の状況でよく使われます。SQL Server logins are often used in the following situations:

  • ワークグループがある場合。If you have a workgroup.

  • ユーザーが、信頼されていない別のドメインから接続する。Users connect from different, non-trusted domains.

  • ASP.NET などのインターネット アプリケーション。Internet applications, such as ASP.NET.

注意

Windows 認証を指定しても、SQL Server ログインは無効になりません。Specifying Windows authentication does not disable SQL Server logins. 高い権限を持つ SQL Server ログインを無効にするには、Transact-SQL ステートメント ALTER LOGIN DISABLE を使用します。Use the ALTER LOGIN DISABLE Transact-SQL statement to disable highly-privileged SQL Server logins.

ログインの種類Login Types

SQL Server では、次の 3 種類のログインがサポートされています。SQL Server supports three types of logins:

  • ローカル Windows ユーザー アカウントまたは信頼される側のドメイン アカウント。A local Windows user account or trusted domain account. SQL Server が Windows に依存する形で Windows ユーザー アカウントを認証します。SQL Server relies on Windows to authenticate the Windows user accounts.

  • Windows グループ。Windows group. Windows グループへのアクセス権を付与すると、そのグループのメンバーであるすべての Windows ユーザー ログインへのアクセス権が付与されます。Granting access to a Windows group grants access to all Windows user logins that are members of the group.

  • SQL Server ログイン。SQL Server login. SQL Server はユーザー名およびパスワードのハッシュを master データベースに格納し、内部の認証方法を使ってログイン試行を検証します。SQL Server stores both the username and a hash of the password in the master database, by using internal authentication methods to verify login attempts.

注意

SQL Server では、証明書または非対称キーから作成されたログインが提供されています。このログインはコード署名にのみ使用されます。SQL Server provides logins created from certificates or asymmetric keys that are used only for code signing. SQL Server への接続には使用できません。They cannot be used to connect to SQL Server.

混合モード認証Mixed Mode Authentication

混合モード認証を使用する場合は、SQL Server に格納される SQL Server ログインを作成する必要があります。If you must use mixed mode authentication, you must create SQL Server logins, which are stored in SQL Server. さらに、SQL Server のユーザー名とパスワードを実行時に指定する必要があります。You then have to supply the SQL Server user name and password at run time.

重要

SQL Server は、sa ("system administrator" の略) という名前の SQL Server ログインでインストールされます。SQL Server installs with a SQL Server login named sa (an abbreviation of "system administrator"). sa ログインに強力なパスワードを割り当て、アプリケーションで sa ログインを使用しないでください。Assign a strong password to the sa login and do not use the sa login in your application. sa ログインは sysadmin 固定サーバー ロールにマップされます。このロールには、サーバー全体に対する取り消し不可能な管理者資格情報が割り当てられています。The sa login maps to the sysadmin fixed server role, which has irrevocable administrative credentials on the whole server. 攻撃者がシステム管理者としてアクセス権を獲得した場合、損害の可能性はとどまることがありません。There are no limits to the potential damage if an attacker gains access as a system administrator. 既定では、Windows BUILTIN\Administrators グループ (ローカル管理者のグループ) のすべてのメンバーが sysadmin ロールに所属しますが、sysadmin ロールから Windows の Administrators グループのメンバーを削除することもできます。All members of the Windows BUILTIN\Administrators group (the local administrator's group) are members of the sysadmin role by default, but can be removed from that role.

SQL Server では、SQL Server ログインのための Windows パスワード ポリシー メカニズムが提供されています。SQL Server provides Windows password policy mechanisms for SQL Server logins. パスワードの複雑性のポリシーは、考えられるパスワードの数を増やすことにより、総当たり攻撃を防ぐようにデザインされています。Password complexity policies are designed to deter brute force attacks by increasing the number of possible passwords. SQL Server では、SQL Server 内部で使用されるパスワードに、同じ複雑性ポリシーおよび有効期限ポリシーを適用できます。SQL Server can apply the same complexity and expiration policies to passwords used inside SQL Server.

重要

ユーザー入力から文字列を連結することによって接続文字列を構築している場合、接続文字列のインジェクション攻撃に対して脆弱になります。Concatenating connection strings from user input can leave you vulnerable to a connection string injection attack. SqlConnectionStringBuilder を使用すると、構文的に正しい接続文字列を実行時に作成できます。Use the SqlConnectionStringBuilder to create syntactically valid connection strings at run time. 詳細については、「接続文字列ビルダー」をご覧ください。For more information, see Connection String Builders.

外部リソースExternal Resources

詳細については、次のリソースを参照してください。For more information, see the following resources.

リソースResource 説明Description
プリンシパルPrincipals SQL Server のログインおよびその他のセキュリティ プリンシパルについて説明します。Describes logins and other security principals in SQL Server.

関連項目See also