Microsoft Entra ID を使用してデータベース認証を有効にする
あらゆるセキュア データベースにある 2 つのコンポーネントは、認証と認可です。
認証は、ユーザーが本人の主張どおりの人物であることを証明するプロセスです。 ユーザーは、ユーザー アカウントを使用してデータベースに接続します。 ユーザーは、データベースへの接続を試みるときに、ユーザー アカウントと認証情報を提供します。 ユーザーは、次の 2 つの認証方法のいずれかを使用して認証されます。
- SQL 認証 - この認証方法を使う場合、ユーザーはユーザー アカウント名とそれに関連付けられたパスワードを送信して接続を確立します。 このパスワードは、ログインにリンクされているユーザー アカウントのマスター データベースに格納されているか、ログインにリンクされて "いない" ユーザー アカウントが含まれるデータベースに格納されています。
- Microsoft Entra 認証 - この認証方法では、ユーザーはユーザー アカウント名を送信して、Microsoft Entra ID に格納されている資格情報を使うことをサービスに要求します。
マスター データベースにユーザー アカウントを作成し、サーバー上のすべてのデータベースにアクセス許可を付与することもできます。また、データベース自体に作成することもできます (包含データベース ユーザーと呼ばれます)。 包含データベースを使うことで、移植性とスケーラビリティが向上します。
ログインとユーザー:Azure SQL では、データベース内のユーザー アカウントをマスター データベースに格納されているログインに関連付けることや、個々のデータベースに格納されているユーザー名をユーザー アカウントにすることができます。
- ログインはマスター データベース内の個々のアカウントであり、それに対して 1 つ以上のデータベース内のユーザー アカウントをリンクできます。 ログインの使用時には、ユーザー アカウントの資格情報はログインと共に格納されます。
- ユーザー アカウントはデータベース内の個々のアカウントであり、ログインにリンクされていることもありますが、その必要はありません。 ログインにリンクされていないユーザー アカウントの使用時には、資格情報はユーザー アカウントと共に格納されます。
データにアクセスし、さまざまなアクションを実行するための承認は、データベース ロールと明示的アクセス許可を使用して管理されます。 承認は、ユーザーに割り当てられるアクセス許可のことで、そのユーザーが実行できる操作を決定するものです。 ユーザー アカウントのデータベースのロール メンバーシップとオブジェクト レベルのアクセス許可によって制御されます。 ベスト プラクティスとして、必要最低限の特権をユーザーに付与することをお勧めします。 ベスト プラクティスとして、アプリケーションでは認証に専用アカウントを使用する必要があります。 この方法により、アプリケーションに付与されるアクセス許可を制限でき、アプリケーション コードが SQL インジェクション攻撃に対して脆弱な場合に、悪意のあるアクティビティのリスクを軽減できます。 包含データベース ユーザーを作成する方法をお勧めします。この方法により、アプリがデータベースから直接認証を受けることができます。
新規データベース作成後の既存のログインとユーザー アカウント
Azure SQL を初めてデプロイするときに、特別な種類の管理ログイン (サーバー管理者) 用のログイン名とパスワードを指定できます。マスター データベースとユーザー データベースにおける以下のログインとユーザーの構成は、デプロイ時に行われます。
- 管理特権を持つ SQL ログインは、ユーザーが指定したログイン名を使用して作成されます。 ログインは、SQL Database、SQL Managed Instance、Azure Synapse にログインするための個々のアカウントです。
- このログインには、サーバー レベルのプリンシパルとしての、すべてのデータベースに対する完全な管理アクセス許可が付与されます。 このログインは使用可能なすべてのアクセス許可を持ち、制限することはできません。 SQL Managed Instance では、このログインは sysadmin 固定サーバー ロールに追加されます (このロールは、Azure SQL Database には存在しません)。
- このアカウントがデータベースにサインインすると、特殊なユーザー アカウント
dbo
と照合されます (ユーザー アカウント。これは各ユーザー データベースに存在します。 dbo ユーザーは、データベース内のすべてのデータベース アクセス許可を持ち、db_owner
固定データベース ロールのメンバーです。
論理サーバーのサーバー管理者アカウントを確認するには、Azure portal を開き、お使いのサーバーやマネージド インスタンスの [プロパティ] タブに移動します。
サーバー管理者アカウントの名前を作成後に変更することはできません。 サーバー管理者のパスワードをリセットするには、Azure portal にアクセスして [SQL Server] をクリックし、一覧からサーバーを選んで [パスワードのリセット] をクリックします。 SQL Managed Instance のパスワードをリセットするには、Azure portal にアクセスし、インスタンスをクリックして [パスワードのリセット] をクリックします。 PowerShell または Azure CLI を使用することもできます。