次の方法で共有


データベース ユーザーの作成

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric プレビューの SQL データベース

この記事では、最も一般的な種類のデータベース ユーザーを作成する方法について説明します。 ユーザーには 13 種類あります。 全種類を記載した一覧は、「CREATE USER」の記事を参照してください。 すべての種類の SQL Server ではデータベース ユーザーがサポートされますが、すべての種類のユーザーがサポートされているとは限りません。

SQL Server Management Studio または Transact-SQL を使用して、データベースを作成できます。

ユーザーの種類について

Management Studio は、データベース ユーザーを作成するときに 6 つのオプションを表示します。 次の図に、6 つのオプションを緑色のボックスに示し、それらが何を表すかを示します。

さまざまな種類のユーザーについて説明する図。

ユーザーの種類を選択する

SQL Server を初めて使用する場合、どの種類のユーザーを作成すればよいかを判断するのは難しいことがあります。 まず、データベースにアクセスする必要があるユーザーまたはグループがログインを持っているかどうかを確認します。

ログインを持つユーザーを作成する

master データベースのログインは、SQL Server を管理するユーザーや、SQL Server インスタンス上の多数またはすべてのデータベースにアクセスする必要があるユーザーに一般的に使用されます。 このような場合は、ログインを持つ SQL ユーザー を作成します。 データベース ユーザー名は、データベースに接続する際にログインと対応する識別情報です。 データベース ユーザー名はログイン名と同じにすることもできますが、必須ではありません。 では、SQL Server にすでにログインが存在していることを前提としています。 ログインの作成方法については、「ログインの 作成」を参照してください。

ログインのないユーザーを作成する

データベースにアクセスする必要があるユーザーまたはグループがログインを持っていない場合、かつ 1 つまたは複数のデータベースにだけアクセスする必要がある場合は、 Windows ユーザー または パスワードを持つ SQL ユーザーを作成します。 コンテインメント ユーザーとも呼ばれます。 コンテインメント ユーザーは、master データベース内のログインに関連付けられません。 これは、SQL Server のインスタンス間でデータベースを簡単に移動できるようにするときに最適な選択肢です。 SQL Server でこのオプションを使用するには、管理者が SQL Server に対してコンテインメント データベースを有効にし、かつ対象のデータベースでもコンテインメントを有効にしておく必要があります。 詳細については、コンテインメント データベースの移植性の確保に関する記事を参照してください。

Important

コンテインメント データベース ユーザーとして接続するときには、接続文字列の一部としてデータベースの名前を指定する必要があります。 SQL Server Management Studio (SSMS) でデータベースを指定するには、[接続先] ダイアログ ボックスで [オプション] を選択し、[接続プロパティ] タブを選択します。

接続するユーザーが Windows で認証できない場合は、SQL Server 認証ログイン に基づいて [パスワードを持つ SQL ユーザー] または [ログインを持つ SQL ユーザー]を選択します。 これは、組織外のユーザー (たとえば、顧客など) が組織の SQL Server に接続するときに一般的に使用されます。

Tip

組織内のユーザーの場合は、Windows 認証の方が適切です。これは、別のパスワードを覚える必要がないため、および Windows 認証は Kerberos などの他のセキュリティ機能を提供するためです。

Background

ユーザーは、データベース レベルのセキュリティ プリンシパルです。 データベースに接続するためには、データベース ユーザーにログインをマップする必要があります。 異なるデータベースには、1 つのログインを異なるユーザーとしてマップすることができますが、各データベースでは 1 人のユーザーとしてのみマップできます。 部分的コンテインメント データベースでは、ログインを持たないユーザーを作成できます。 コンテインメント データベース ユーザーの詳細については、「CREATE USER」を参照してください。 データベースでゲスト ユーザーが有効になっている場合は、データベース ユーザーにマップされていないログインでも、ゲスト ユーザーとしてそのデータベースにアクセスできます。

SQL Server 2012 (11.x) 以降、SQL Server および Azure SQL DB では、SHA-512 ハッシュに一意の 32 ビット ランダム ソルトを組み合わせた手法が使用されています。 この方法により攻撃者がパスワードを推測するのは統計的に非現実的になりました。

SQL Server 2025 (17.x) Preview では、新たに繰り返しハッシュ アルゴリズムである RFC2898 (パスワードベースの鍵導出関数、別名: PBKDF) が導入されました。 このアルゴリズムでは引き続き SHA-512 を使用しますが、パスワードを 100,000 回繰り返しハッシュすることで、総当たり攻撃の速度を大幅に低下させます。 この変更により、進化するセキュリティ脅威への対応が強化され、NIST SP 800-63b ガイドラインへの準拠も支援されます。

Important

ゲスト ユーザーは通常、無効にします。 ゲスト ユーザーは、必要な場合以外有効にしないでください。

セキュリティ プリンシパルとして、ユーザーには権限を許可することができます。 ユーザーのスコープはデータベースです。 SQL Server のインスタンス上の特定のデータベースに接続するには、データベース ユーザーにログインをマップする必要があります。 データベース内の権限を許可したり拒否したりする際に、その対象となるのは、ログインではなく、データベース ユーザーです。

Permissions

データベースに対する ALTER ANY USER 権限が必要です。

SSMS でユーザーを作成する

  1. オブジェクト エクスプローラーで、 [データベース] フォルダーを展開します。

  2. 新しいデータベース ユーザーを作成するデータベースを展開します。

  3. [セキュリティ] フォルダーを右クリックし、[新規作成] をポイントして、[ユーザー] を選択します。

  4. [データベース ユーザー - 新規] ダイアログ ボックスの [全般] ページで、[ユーザーの種類] ボックスの一覧で次のユーザーの種類のいずれかを選択します。

    • ログインを持つ SQL ユーザー
    • パスワード を持つ SQL ユーザー (コンテインメント データベースが有効になっている場合)
    • ログインを持たない SQL ユーザー
    • 証明書にマップされたユーザー
    • 非対称キーにマップされたユーザー
    • Windows user

    Fabric SQL データベースでは、WITH PASSWORD はサポートされていません。サポートされている認証方法は、データベース ユーザーの Microsoft Entra ID のみです。

  5. オプションを選択すると、ダイアログ ボックスの残りのオプションを変更できるようになります。 一部のオプションは、特定の種類のデータベース ユーザーにのみ適用されます。 一部のオプションは空白にすることができますが、その場合は既定値が使用されます。

    • User name

      新しいユーザーのユーザー名を入力します。 [ユーザーの種類] で一覧から [Windows ユーザー] を選択した場合は、省略記号 [...] を選択して、[ユーザーまたはグループの選択] ダイアログ ボックスを開くこともできます。

    • Login name

      ユーザーのログインを入力します。 または、省略記号 [...] を選択して [ログインの選択] ダイアログ ボックスを開きます。 [ログイン名] は、 [ユーザーの種類] で一覧から [ログインを持つ SQL ユーザー] または [Windows ユーザー] を選択した場合に使用できます。

    • [パスワード][パスワードの確認]:

      データベースで認証するユーザーのパスワードを入力します。

    • Default language

      ユーザーの既定の言語を入力します。

    • Default schema

      このユーザーが作成したオブジェクトを所有するスキーマを入力します。 または、省略記号 [...] をクリックして [スキーマの選択] ダイアログ ボックスを開きます。 [既定のスキーマ] は、 [ユーザーの種類]で一覧から [ログインを持つ SQL ユーザー][ログインを持たない SQL ユーザー] 、または [Windows ユーザー] を選択した場合に使用できます。

    • Certificate name

      データベース ユーザーに使用する証明書を入力します。 または、省略記号 [...] を選択して [証明書の選択] ダイアログ ボックスを開きます。 [証明書名] は、[ユーザーの種類] で一覧から [証明書にマップされたユーザー] を選択した場合に使用できます。

    • [非対称キー名]

      データベース ユーザーに使用するキーを入力します。 または、省略記号 [...] を選択して [非対称キーの選択] ダイアログ ボックスを開きます。 [非対称キー名] は、[ユーザーの種類] で一覧から [非対称キーにマップされたユーザー] を選択した場合に使用できます。

  6. Select OK.

Additional options

[データベース ユーザー - 新規] ダイアログ ボックスでは、[所有されているスキーマ][メンバーシップ][セキュリティ保護可能なリソース][拡張プロパティ] という他の 4 つのページにもオプションが提供されます。

  • [所有されているスキーマ] ページには、新しいデータベース ユーザーが所有できるすべてのスキーマが一覧表示されます。 データベース ユーザーのスキーマを追加または削除するには、 [このユーザーが所有するスキーマ]で、スキーマの横のチェック ボックスをオンまたはオフにします。

  • [メンバーシップ] ページには、新しいデータベース ユーザーが所有できるすべてのデータベース メンバーシップ ロールが一覧表示されます。 データベース ユーザーのロールを追加または削除するには、 [データベース ロールのメンバーシップ]で、ロールの横のチェック ボックスをオンまたはオフにします。

  • [セキュリティ保護可能なリソース] ページには、すべてのセキュリティ保護可能なリソースと、ログインに付与できる、セキュリティ保護可能なリソースに対する権限が一覧表示されます。

  • [拡張プロパティ] ページでは、カスタム プロパティをデータベース ユーザーに追加できます。 このページで使用できるオプションを次に示します。

    • Database

      選択しているデータベースの名前が表示されます。 このフィールドは読み取り専用です。

    • Collation

      選択されているデータベースに使用する照合順序を表示します。 このフィールドは読み取り専用です。

    • Properties

      オブジェクトの拡張プロパティを表示または指定します。 各拡張プロパティは、オブジェクトに関連付けられたメタデータの名前/値ペアで構成されています。

    • Ellipsis (...)

      [値] の後ろにある省略記号 [...] をクリックすると、[拡張プロパティの値] ダイアログ ボックスが開きます。 ここでは、より大きなテキスト ボックスを使用して拡張プロパティの値を入力または表示できます。 詳細については、「 拡張プロパティの値ダイアログ ボックス」を参照してください。

    • Delete

      選択されている拡張プロパティを削除します。

T-SQL を使用してユーザーを作成する

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. [標準] バーで、[新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。

    -- Creates the login AbolrousHazem with password '340$Uuxwp7Mcxo7Khy'.
    CREATE LOGIN AbolrousHazem
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
    GO
    
    -- Creates a database user for the login created previously.
    CREATE USER AbolrousHazem
    FOR LOGIN AbolrousHazem;
    GO
    

詳細については、「CREATE USER」を参照してください。この記事には、さらに多くの Transact-SQL の例が提示されています。