演習 - 認証を構成する

完了

この演習では、ログイン、ユーザー、管理者を作成し、SQL Server の通常のユーザーの場合と同じように、Microsoft Entra のユーザーにデータベースへのアクセスを許可します。

  1. SQL Server Management Studio (SSMS) を開き、まだ接続していない場合は、お使いの Azure SQL Database 論理サーバーに接続します。

  2. 自分のデータベースを構成して接続したら、次の手順として、他のユーザーを追加してアクセス権を付与します。 SQL Server と同様に、新しいログインとユーザーを追加できます。

    SSMS で、ご利用の ''データベース サーバー'' を右クリックし、[新しいクエリ] を選択し、次のコマンドを使用して新しいクエリを作成します。 [実行] を選択してクエリを実行します。

    -- Create a new SQL login and give them a password
    CREATE LOGIN ApplicationUser WITH PASSWORD = 'YourStrongPassword1';
    

    ヒント

    Azure SQL Database の多くのクエリでは、お使いの Azure SQL Database 論理サーバー内の "データベース" を右クリックします。 SQL Server と Azure SQL Managed Instance では、サーバー レベルでクエリを実行して USE <DatabaseName> を使用できますが、Azure SQL Database では、データベースに直接クエリを実行する必要があります。 これは、USE ステートメントがサポートされていないためです。 Azure SQL Database でお使いのデータベースにクエリを行う場合にはいくつかの例外があり、その 1 つはログインです。 ログインを作成および変更するには、仮想 master データベースに接続する必要があります。

    これで、サーバー レベルでログインできるようになりました。 次の手順では、AdventureWorks データベースにユーザーを作成し、必要に応じて読み取り/書き込みアクセス権を付与します。 AdventureWorks データベースを右クリックし、[新しいクエリ] を選択します。 次のコマンドを使用して新しいクエリを作成し、[実行] を選択します。

    -- Create a new SQL user from that login
    CREATE USER ApplicationUser FOR LOGIN ApplicationUser;
    
    -- Until you run the following two lines, ApplicationUser has no access to read or write data
    ALTER ROLE db_datareader ADD MEMBER ApplicationUser;
    ALTER ROLE db_datawriter ADD MEMBER ApplicationUser;
    

    ユーザーは、サーバー全体ではなく、AdventureWorks データベースのみにログインできるようになります。

    ベスト プラクティスは、管理者タスクを実行する必要がない限り、データベース レベルで管理者以外のアカウントを作成することです。

  3. SQL Server の包含データベース ユーザーの概念をご存知かもしれません。 これは、ユーザーが特定のデータベースにのみアクセスでき、サーバーへはログインできないことを意味します。 Azure SQL Database では、SQL 認証または Microsoft Entra 認証を使って包含データベース ユーザーを作成できます。 (master ではなく) ユーザー アクセスを作成するユーザー データベースのコンテキストである必要があります。 SSMS で、ご利用の ''データベース'' を右クリックし、[新しいクエリ] を選択します。 次のコマンドを使用して新しいクエリを作成し、[実行] を選択します。

    CREATE USER MyDatabaseUser WITH PASSWORD = 'C0mpl3xPa55word!'
    
  4. オブジェクト エクスプローラーの左上にある [接続] を選択し、[データベース エンジン] を選びます。 Azure SQL Database 論理サーバーに接続するようにメイン ページを構成します。 [ログイン] には、「MyDatabaseUser」と入力し、[パスワード] には、「C0mpl3xPa55word!」と入力します。

  5. また、データベース名も設定する必要があります。これを行うには、[オプション]>[追加の接続パラメーター] に移動し、Initial Catalog=AdventureWorks を入力します。 この操作は手動で行う必要があります。MyDatabaseUser には、データベースを選択するためにサーバーをスキャンするアクセス権がないためです。

  6. [接続] を選択し、データベースにアクセスできることを確認します。

  7. クリーンアップ手順として、MyDatabaseUser の接続を右クリックし、[切断] を選択します。

他の Microsoft Entra ユーザーにアクセスを許可する

CREATE USER [anna@contoso.com] FROM EXTERNAL PROVIDER T-SQL 構文を使って、Microsoft Entra アカウントから包含データベース ユーザーとしてログインを作成できます。 包含データベース ユーザーは、データベースに関連付けられた Microsoft Entra ディレクトリ内の ID にマップされており、master データベース内にログインはありません。

Azure SQL Database に Microsoft Entra サーバー ログインを導入することで、SQL Database の仮想 master データベース内に Microsoft Entra プリンシパルからログインを作成できます。 Microsoft Entra ログインは、Microsoft Entra の "ユーザー、グループ、サービス プリンシパル" から作成できます。 詳しくは、「Microsoft Entra のサーバー プリンシパル」をご覧ください

さらに、Azure portal は管理者の作成にのみ使用できます。Azure のロールベースのアクセス制御ロールは、Azure SQL Database 論理サーバーには反映されません。 Transact-SQL (T-SQL) を使用して、追加のサーバーとデータベースのアクセス許可を付与する必要があります。