適用対象:Azure SQL データベース
この記事では、次の内容について説明します。
- ユーザーが管理タスクを実行し、これらのデータベースに格納されているデータにアクセスできるようにする、Azure SQL Databaseの構成オプション。
- 新しいサーバーを作成した後のアクセスと承認の構成。
-
masterデータベースにログインとユーザー アカウントを追加し、これらのアカウントに管理アクセス許可を付与する方法。 - ログインに関連付けられているユーザー アカウントまたは包含ユーザー アカウントとして、ユーザー データベースにユーザー アカウントを追加する方法。
- データベース ロールと明示的なアクセス許可を使用して、ユーザー データベースのアクセス許可を持つユーザー アカウントを構成する方法。
- Azure SQL Managed Instanceについては、「SQL Managed Instanceへのデータベース アクセスの承認」を参照してください。
- Azure Synapse Analyticsについては、「Azure Synapse Analyticsへのデータベース アクセスの承認」を参照してください。
注
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
認証と権限承認
認証は、ユーザーが本人の主張どおりの人物であることを証明するプロセスです。 ユーザーは、ユーザー アカウントを使用してデータベースに接続します。
ユーザーは、データベースへの接続を試みるときに、ユーザー アカウントと認証情報を提供します。 ユーザーは、次の 2 つの認証方法のいずれかを使用して認証されます。
-
この認証方法を使用して、ユーザーはユーザー アカウント名と関連付けられたパスワードを送信して接続を確立します。
masterデータベースには、ログインにリンクされているユーザー アカウントのこのパスワードが格納されます。 ログインにリンク されていない ユーザー アカウントを含むデータベースには、パスワードが格納されます。注
Azure SQL Database では、パスワード ポリシーに対してのみパスワードの複雑さが適用されます。
Azure SQL 向け Microsoft Entra 認証
この認証方法を使用すると、ユーザーはユーザー アカウント名を送信し、Microsoft Entra ID (formerly Azure Active Directory) に格納されている資格情報を使用することをサービスに要求します。
ログインとユーザー: データベース内のユーザー アカウントを、 master データベースが格納するログインに関連付けるか、個々のデータベースに格納するユーザー名にすることができます。
-
ログインは、
masterデータベース内のアカウントであり、1 つ以上のデータベース内のユーザー アカウントをリンクできます。 ログインを使用すると、ログインと共にユーザー アカウントの資格情報を格納します。 - ユーザー アカウントは、ログインにリンクされている可能性があるが、リンクされている必要はないデータベース内の個々のアカウントです。 ログインにリンクされていないユーザー アカウントを使用して、資格情報をユーザー アカウントに格納します。
データにアクセスしてさまざまなアクションを実行するための承認は、データベース ロールと明示的なアクセス許可を使用して管理されます。 承認とは、ユーザーに割り当てられたアクセス許可を指し、そのユーザーが実行できる操作を決定します。 ユーザー アカウントのデータベース ロール メンバーシップと オブジェクト レベルのアクセス許可によって 承認が制御されます。 ベスト プラクティスとして、必要最小限の特権をユーザーに付与します。
新規データベース作成後の既存のログインとユーザー アカウント
Azure SQL リソースを最初にデプロイするときは、特別な種類の管理ログインのログイン名とパスワードを指定します。Server admin。デプロイ時に、master およびユーザー データベースのログインとユーザーの次の構成が行われます。
重要
サーバー管理者ログイン名フィールドには、個人情報、センシティブ情報、または機密情報を含めないでください。 このフィールドに入力されたデータは、 顧客データとは見なされません。
- デプロイ プロセスでは、指定したログイン名を使用して、管理特権を持つ SQL 認証ログインが作成されます。 ログインは、Azure SQL Databaseにサインインするための個々のアカウントです。
- デプロイ プロセスでは、サーバー レベルのプリンシパルとして、すべてのデータベースに対するこのログインの完全な管理アクセス許可が付与されます。 このログインは使用可能なすべてのアクセス許可を持ち、制限することはできません。
- このアカウントがデータベースにサインインすると、各ユーザー データベースに存在する特殊なユーザー アカウント
dbo(ユーザー アカウント) と一致します。 dbo ユーザーは、データベース内のすべてのデータベース アクセス許可を持ち、db_owner固定データベース ロールのメンバーです。 追加の固定データベース ロールについては、この記事で後述します。
サーバー管理者アカウントを識別するには:
- aka.ms/azuresqlhub の Azure SQL ハブに移動します。
- リソース メニューで、Azure SQL Database論理サーバーに移動します。
- [ 設定] で、[ プロパティ ] ページを選択します。
- サーバー管理者ログインまたは Microsoft Entra 管理者の値を表示します。
重要
サーバー管理者アカウントの名前は、作成後に変更することはできません。 サーバー管理者のパスワードをリセットするには、Azure portal にアクセスします。SQL Server を検索し、リストからサーバーを選択して、[パスワードのリセット] を選択します。
管理アクセス許可を持つ追加のログインとユーザーを作成する
この時点で、SQL 論理サーバーは、単一の SQL 認証ログインとユーザー アカウントを使用してアクセスするように構成されます。 完全または部分的な管理アクセス許可を持つ追加のログインを作成するには、次のオプションを使用します。
完全な管理アクセス許可を持つ Microsoft Entra 管理者アカウントを作成する
Microsoft Entra認証を有効にして、Microsoft Entra管理者を追加します。完全な管理アクセス許可を持つ Azure SQL 展開の管理者として、1 つのMicrosoft Entra アカウントを構成できます。 このアカウントは、個人のアカウントまたはセキュリティ グループのアカウントのいずれかです。 Microsoft Entra アカウントを使用してAzure SQL Databaseに接続する場合は、Microsoft Entra管理者を構成する必要があります。 すべての種類の Azure SQL デプロイに対して Microsoft Entra 認証を有効にすることの詳細については、以下の記事を参照してください。
SQL Database で、管理アクセス許可が制限された SQL 認証ログインを作成する
-
masterデータベースに追加の SQL 認証ログインを作成します。-
##MS_DatabaseManager##ステートメントを使用して、##MS_LoginManager##、##MS_DatabaseConnector##、およびサーバー レベルのロールにログインを追加します。
-
Azure SQL Database のための特別な
masterデータベース ロールのメンバーには、データベースを作成して管理する権限や、ログインを作成して管理する権限があります。dbmanagerロールのメンバーであるユーザーによって作成されたデータベースでは、メンバーは固定データベース ロールdb_ownerにマップされ、dboユーザー アカウントを使用してそのデータベースにサインインして管理できます。 これらのロールは、masterデータベースの外では明示的アクセス許可を持ちません。重要
Azure SQL Databaseで完全な管理アクセス許可を持つ追加の SQL 認証ログインを作成することはできません。 サーバーロールとの間で他のログインを追加または削除できるのは、サーバー管理者アカウントまたは Microsoft Entra 管理者アカウント (Microsoft Entra グループも該当します) のみです。 この制限は、Azure SQL Databaseに固有です。
-
管理者以外のユーザーのアカウントを作成する
次のいずれかの方法を使用して、管理者以外のユーザーのアカウントを作成します。
ログインを作成する
masterデータベースに SQL 認証ログインを作成します。 次に、ユーザーがアクセスしてログインに関連付ける必要があるユーザー アカウントを各データベースに作成します。 この方法は、ユーザーが複数のデータベースにアクセスする必要があり、パスワードの同期を維持する必要がある場合に使用します。 ただし、この方法では、プライマリ サーバーとセカンダリ サーバーの両方でログインを作成する必要があるため、geo レプリケーションで使用すると複雑さが増します。 詳細については、「Azure SQL Database のセキュリティを geo リストアやフェールオーバー用に構成し、管理する」を参照してください。ユーザー アカウントを作成する
ユーザーがアクセスする必要があるユーザー アカウントをデータベースに作成します ( 包含ユーザーとも呼ばれます)。
この方法を使用すると、ユーザー認証情報は各データベースに格納され、地理的にレプリケートされた各データベースに自動的にレプリケートされます。 ただし、同じアカウントが複数のデータベースに存在し、SQL 認証を使用している場合は、パスワードを手動で同期しておく必要があります。 さらに、ユーザーが異なるデータベースに、パスワードが異なるアカウントを持っている場合は、それらのパスワードを覚えておくことが問題になる可能性があります。
重要
Microsoft Entra ID にマップされた包含ユーザーを作成するには、Azure SQL DatabaseのデータベースでMicrosoft Entra アカウントを使用してログインする必要があります。
ログインとユーザーを作成する方法を示す例については、次を参照してください。
ヒント
Azure SQL Database でのユーザーの作成を含むセキュリティ チュートリアルについては、「 チュートリアル: Azure SQL Database でのデータベースのセキュリティ保護」を参照してください。
固定データベースロールおよびカスタムデータベースロールの使用
データベース内にユーザー アカウントを作成した後、ログインに基づいて、または包含ユーザーとして、そのユーザーがさまざまなアクションを実行し、特定のデータベースのデータにアクセスすることを承認できます。 アクセスを承認するには、次の方法を使用します。
固定データベース ロール
ユーザー アカウントを固定データベース ロールに追加します。 固定データベース ロールは 9 つあり、それぞれに一連のアクセス許可が定義されています。 最も一般的な固定データベース ロールは、db_owner、db_ddladmin、db_datawriter、db_datareader、db_denydatawriter、db_denydatareader です。 db_ownerを使用して、少数のユーザーにのみ完全なアクセス許可を付与します。 他の固定データベース ロールは、開発中の単純なデータベースをすばやく取得するのに役立ちますが、ほとんどの実稼働データベースには推奨されません。 たとえば、db_datareader 固定データベース ロールでは、データベース内のすべてのテーブルへの読み取りアクセスが許可されますが、これは必ず必要なレベルを上回っています。
固定データベース ロールにユーザーを追加するには:
- Azure SQL Databaseで、ALTER ROLE ステートメントを使用します。 例については、 ALTER ROLE の例を参照してください。
カスタム データベース ロール
CREATE ROLE ステートメントを使用して、カスタム データベース ロールを作成します。 カスタム ロールを利用すると、独自のユーザー定義データベース ロールを作成し、各ロールに対して、ビジネス ニーズに応じて必要とされる最小限のアクセス許可を慎重に付与することができます。 次に、カスタム ロールにユーザーを追加します。 ユーザーが複数のロールのメンバーである場合は、それらのアクセス許可すべてが集約されます。
アクセス許可を直接付与する
ユーザー アカウントにアクセス許可を直接付与します。 個別に許可または拒否できるアクセス許可は 100 を超えます。 これらのアクセス許可の多くは、入れ子になっています。 たとえば、スキーマに対する
UPDATEアクセス許可には、そのスキーマ内の各テーブルに対するUPDATEアクセス許可が含まれています。 ほとんどのアクセス許可システムと同様に、アクセス許可の拒否は許可をオーバーライドします。 入れ子になっている性質と、アクセス許可の数により、データベースを正しく保護するのに適切なアクセス許可システムを設計するには、慎重な調査を行う場合があります。 まず「権限 (データベース エンジン)」でアクセス許可の一覧を確認してから、アクセス許可のポスター サイズの図も確認してください。
グループの使用
効率的なアクセス管理では、個々のユーザーではなく、Microsoft Entraセキュリティ グループと固定ロールまたはカスタム ロールにアクセス許可が割り当てられます。
Microsoft Entra 認証を使用する場合は、Microsoft Entra ユーザーを Microsoft Entra セキュリティ グループに配置します。 そのグループ用に包含データベース ユーザーを作成します。 1 人以上のデータベース ユーザーをメンバーとして、そのユーザー グループに適した特定のアクセス許可を持つカスタム または組み込みのデータベース ロールに追加します。
SQL 認証の使用時は、データベース内に包含データベース ユーザーを作成します。 1 人以上のデータベース ユーザーを、そのユーザー グループにとって適切な特定のアクセス許可を持つカスタム データベース ロールに配置します。
注
また、非包含データベース ユーザーにグループを使用することもできます。
アクセス許可を制限または昇格するために使用できる次の機能について理解します。
- 権限借用とモジュール署名を使用すると、安全にアクセス許可を一時的に昇格できます。
- 行レベル セキュリティを使用すると、ユーザーがアクセスできる行を制限できます。
- 動的データ マスク を使用して、機密データの公開を制限できます。
- ストアド プロシージャ を使用すると、データベースで実行できるアクションを制限できます。