Azure Database for MySQL - フレキシブル サーバーの Microsoft Entra 認証
Microsoft Entra 認証は、Microsoft Entra ID で定義された ID を使って Azure Database for MySQL フレキシブル サーバーに接続するためのメカニズムです。 Microsoft Entra 認証を使うと、データベース ユーザーの ID や他の Microsoft サービスを一元管理でき、アクセス許可の管理が容易になります。
メリット
- Azure サービス全体でのユーザー認証の一元化
- パスワード ポリシーとパスワード ローテーションの一元管理
- Microsoft Entra ID による複数の認証形式のサポート (パスワードを格納する必要がなくなる)
- お客様は、外部の (Microsoft Entra ID) グループを使用してデータベースのアクセス許可を管理できます。
- Microsoft Entra 認証では、MySQL データベース ユーザーを使用して、データベース レベルで ID を認証します
- Azure Database for MySQL フレキシブル サーバーに接続するアプリケーションに対するトークンベースの認証のサポート
Microsoft Entra 認証を構成して使用する手順
フレキシブル サーバーにアクセスするための優先認証方法を選択します。 既定で、選択されている認証は [MySQL 認証のみ] に設定されています。 [Microsoft Entra 認証のみ] または [MySQL と Microsoft Entra 認証] を選んで、Microsoft Entra 認証を有効にします。
次の特権を持つユーザー マネージド ID (UMI) を選んで、Microsoft Entra 認証を構成します。
- User.Read.All: Microsoft Entra のユーザー情報にアクセスできます。
- GroupMember.Read.All: Microsoft Entra のグループ情報にアクセスできます。
- Application.Read.ALL: Microsoft Entra サービス プリンシパル (アプリケーション) 情報にアクセスできます。
Microsoft Entra 管理者を追加します。フレキシブル サーバーにアクセスできる Microsoft Entra ユーザーまたはグループを指定できます。
Microsoft Entra の ID にマップされているデータベース ユーザーをデータベースに作成します。
Microsoft Entra の ID 用のトークンを取得してログインし、自分のデータベースに接続します。
Note
Azure Database for MySQL フレキシブル サーバーで Microsoft Entra 認証を構成する詳細な手順については、「Azure Database for MySQL - フレキシブル サーバーの Microsoft Entra 認証を設定する」をご覧ください
Architecture
Microsoft Entra 認証には、ユーザー マネージド ID が必要です。 ユーザー割り当て ID がフレキシブル サーバーにリンクされると、マネージド ID リソース プロバイダー (MSRP) によってその ID に対して内部的に証明書が発行されます。 マネージド ID が削除されると、対応するサービス プリンシパルが自動的に削除されます。
その後、サービスはマネージド ID を使って、Microsoft Entra 認証をサポートするサービスのアクセス トークンを要求します。 Azure Database では、現在、Azure Database for MySQL フレキシブル サーバーに対してユーザー割り当てマネージド ID (UMI) のみがサポートされています。 詳細については、Azure の「マネージド ID の種類」を参照してください。
次の概要図は、Azure Database for MySQL フレキシブル サーバーで Microsoft Entra 認証を使用した場合の認証のしくみをまとめたものです。 矢印は通信経路を示します。
- アプリケーションは、Azure Instance Metadata Service ID エンドポイントからトークンを要求できます。
- クライアント ID と証明書を使うと、Microsoft Entra ID に対してアクセス トークンを要求する呼び出しが行われます。
- Microsoft Entra ID から JSON Web Token (JWT) アクセス トークンが返されます。 フレキシブル サーバーへの呼び出しで、アプリケーションによってアクセス トークンが送信されます。
- フレキシブル サーバーは、Microsoft Entra ID でトークンを検証します。
管理者の構造
Microsoft Entra 認証を使用する場合、Azure Database for MySQL フレキシブル サーバーには、元の MySQL 管理者と Microsoft Entra 管理者の 2 つの管理者アカウントが存在します。
ユーザー データベースに最初の Microsoft Entra ID 包含データベース ユーザーを作成できるのは、Microsoft Entra アカウントに基づく管理者のみです。 Microsoft Entra 管理者のサインインには、Microsoft Entra ユーザーまたは Microsoft Entra グループを使用できます。 管理者がグループ アカウントの場合、すべてのグループ メンバーがそれを使用できるので、フレキシブル サーバーに対して複数の Microsoft Entra 管理者が有効になります。 グループ アカウントを管理者として使うと、Microsoft Entra ID でグループ メンバーを一元的に追加および削除でき、フレキシブル サーバーでユーザーまたはアクセス許可を変更する必要がないので、いっそう管理しやすくなります。 構成できる Microsoft Entra 管理者 (ユーザーまたはグループ) は一度に 1 つだけです。
フレキシブル サーバーにアクセスするための認証方法は次のとおりです。
MySQL 認証のみ - これが既定のオプションです。 フレキシブル サーバーへのアクセスには、MySQL サインインとパスワードを使用したネイティブの MySQL 認証のみを使用できます。
Microsoft Entra 認証のみ - MySQL のネイティブ認証は無効になり、ユーザーは各自の Microsoft Entra ユーザーとトークンのみを使って認証を行うことができます。 このモードを有効にするには、サーバー パラメーター aad_auth_only を ON に設定します。
MySQL と Microsoft Entra ID での認証 - ネイティブ MySQL 認証と Microsoft Entra 認証の両方がサポートされます。 このモードを有効にするには、サーバー パラメーター aad_auth_only を OFF に設定します。
アクセス許可
UMI がサーバー ID として Microsoft Graph から読み取れるようにするには、次のアクセス許可が必要です。 または、ユーザー割り当てマネージド ID にディレクトリ閲覧者ロールを付与します。
重要
これらのアクセス許可を付与できるのは、少なくとも特権ロール管理者ロールを持つユーザーだけです。
- User.Read.All: Microsoft Entra のユーザー情報にアクセスできます。
- GroupMember.Read.All: Microsoft Entra のグループ情報にアクセスできます。
- Application.Read.ALL: Microsoft Entra サービス プリンシパル (アプリケーション) 情報にアクセスできます。
アクセス許可を付与して使用する方法のガイダンスについては、「Microsoft Graph のアクセス許可の概要」を参照してください
アクセス許可を UMI に付与すると、サーバー ID として割り当てられた UMI で作成されたすべてのサーバーに対してそれらが有効になります。
トークンの検証
Azure Database for MySQL フレキシブル サーバーでの Microsoft Entra 認証では、ユーザーが MySQL サーバーに存在することが確認され、トークンの内容を検証してトークンの有効性がチェックされます。 次のトークンの検証手順が実行されます。
- トークンは Microsoft Entra ID によって署名されており、改ざんされていない。
- トークンは、サーバーに関連付けられているテナントの Microsoft Entra ID によって発行された。
- トークンの有効期限が切れていないこと。
- トークンが (別の Azure リソースではなく) フレキシブル サーバー リソース用であること。
Microsoft Entra の ID を使用して接続する
Microsoft Entra 認証では、Microsoft Entra の ID を使用してデータベースに接続する次の方法がサポートされています。
- Microsoft Entra パスワード
- Microsoft Entra 統合
- MFA による Microsoft Entra ユニバーサル
- Active Directory Application 証明書またはクライアント シークレットの使用
- マネージド ID
Active Directory に対して認証を行った後、トークンを取得します。 このトークンはログイン用のパスワードです。
Note
新しいユーザーの追加などのその管理操作は、Microsoft Entra ユーザー ロールに対してのみサポートされます。
Note
Active Directory トークンを使って接続する方法についての詳細は、「Azure Database for MySQL - フレキシブル サーバーでの Microsoft Entra 認証を設定する」に関する記事をご覧ください。
その他の考慮事項
フレキシブル サーバーごとに構成できる Microsoft Entra 管理者は、常に 1 人だけです。
Microsoft Entra アカウントを使ってフレキシブル サーバーに最初に接続できるのは、MySQL の Microsoft Entra 管理者だけです。 その後、Active Directory 管理者は、Microsoft Entra データベース ユーザーまたは Microsoft Entra グループを構成できます。 管理者がグループ アカウントの場合、すべてのグループ メンバーがそれを使用できるので、フレキシブル サーバーに対して複数の Microsoft Entra 管理者が有効になります。 グループ アカウントを管理者として使うと、Microsoft Entra ID でグループ メンバーを一元的に追加および削除でき、フレキシブル サーバーでユーザーまたはアクセス許可を変更する必要がないので、いっそう管理しやすくなります。
ユーザーが Microsoft Entra ID から削除されると、そのユーザーは Microsoft Entra ID で認証できなくなります。 そのため、そのユーザーのアクセス トークンは取得できなくなります。 一致するユーザーはまだデータベースに存在しますが、そのユーザーを使用してサーバーに接続することはできません。
Note
削除された Microsoft Entra ユーザーは、トークンの有効期限 (トークンの発行から最大 60 分) が切れるまで、引き続きログインできます。 Azure Database for MySQL フレキシブル サーバーからユーザーを削除する場合は、このアクセスはすぐに取り消されます。
Microsoft Entra 管理者がサーバーから削除されると、サーバーと Microsoft Entra テナントの関連付けが解消されるため、サーバーへのすべての Microsoft Entra ログインは無効になります。 同じテナントから新しい Microsoft Entra を追加すると、Microsoft Entra ログインは再び有効になります。
フレキシブル サーバーは、ユーザー名ではなく、ユーザーの一意の Microsoft Entra ユーザー ID を使って、アクセス トークンを Azure Database for MySQL フレキシブル サーバー ユーザーと照合します。 つまり、ある Microsoft Entra ユーザーが Microsoft Entra ID で削除され、新しいユーザーが同じ名前で作成された場合、フレキシブル サーバーは別のユーザーと見なします。 このため、ユーザーを Microsoft Entra ID から削除した後、同じ名前で新しいユーザーを追加しても、その新しいユーザーは既存のユーザーと接続できません。
Note
Microsoft Entra 認証が有効になっているフレキシブル サーバーのサブスクリプションは、別のテナントやディレクトリに譲渡できません。