演習 - 認証を構成する
この演習では、ログイン、ユーザー、管理者を作成し、SQL Server の通常のユーザーの場合と同じように、Microsoft Entra のユーザーにデータベースへのアクセスを許可します。
SQL Server Management Studio (SSMS) を開き、まだ接続していない場合は、お使いの Azure SQL Database 論理サーバーに接続します。
自分のデータベースを構成して接続したら、次の手順として、他のユーザーを追加してアクセス権を付与します。 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 データベースのみにログインできるようになります。
ベスト プラクティスは、管理者タスクを実行する必要がない限り、データベース レベルで管理者以外のアカウントを作成することです。
SQL Server の包含データベース ユーザーの概念をご存知かもしれません。 これは、ユーザーが特定のデータベースにのみアクセスでき、サーバーへはログインできないことを意味します。 Azure SQL Database では、SQL 認証または Microsoft Entra 認証を使って包含データベース ユーザーを作成できます。 (
master
ではなく) ユーザー アクセスを作成するユーザー データベースのコンテキストである必要があります。 SSMS で、ご利用の ''データベース'' を右クリックし、[新しいクエリ] を選択します。 次のコマンドを使用して新しいクエリを作成し、[実行] を選択します。CREATE USER MyDatabaseUser WITH PASSWORD = 'C0mpl3xPa55word!'
オブジェクト エクスプローラーの左上にある [接続] を選択し、[データベース エンジン] を選びます。 Azure SQL Database 論理サーバーに接続するようにメイン ページを構成します。 [ログイン] には、「MyDatabaseUser」と入力し、[パスワード] には、「C0mpl3xPa55word!」と入力します。
また、データベース名も設定する必要があります。これを行うには、[オプション]>[追加の接続パラメーター] に移動し、
Initial Catalog=AdventureWorks
を入力します。 この操作は手動で行う必要があります。MyDatabaseUser には、データベースを選択するためにサーバーをスキャンするアクセス権がないためです。[接続] を選択し、データベースにアクセスできることを確認します。
クリーンアップ手順として、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) を使用して、追加のサーバーとデータベースのアクセス許可を付与する必要があります。