Azure Arc によって有効化された SQL Server を最小限の権限で操作する

適用対象:SQL Server

最小限の権限の情報セキュリティ原則は、アカウントとアプリケーションが必要なデータと操作のみにアクセスできることをアサートします。 Azure Arc で SQL Server を有効にすると、最小限の権限でエージェント拡張機能サービスを実行できます。 この記事では、最小限の権限でエージェント拡張機能サービスを実行する方法について説明します。

「Azure Extension for SQL Server の Windows サービス アカウントとアクセス許可を構成する」では、 エージェント拡張機能サービスの最小権限のアクセス許可について説明します。

デフォルトで最小権限が有効になっています

Azure Server Extension for SQL Serverの以下のバージョンでは、最低権限がデフォルトで有効化されています:

  • バージョン 1.1.3453.436
  • バージョン1.1.3518.465およびそれ以降のバージョン

最小権限は、1.1.3453.436以前のバージョンやバージョン1.1.3464.439、1.1.3494.451、1.1.3500.453ではデフォルトで有効になっていません。 これらのバージョンについては、この記事の手順に従って手動で最小権限を有効にする方法をご確認ください。

注意

1.1.2859.223以降のバージョンを使用している既存サーバーでは、自動アップグレードが有効になると、最終的に自動アップグレードの一部として最小権限設定が適用されます。 最小権限構成の自動適用を防ぐために、 1.1.2859.223後に拡張アップグレードをブロックしてください。

最小権限が有効になると、SQL ServerのAzure拡張は自動的にNT SERVICE\SqlServerExtensionをローカルWindowsサービスアカウントとして作成・管理し、ログインSQL Serverします:

  • この拡張機能は、設定ログの読み書きに必要なWindows権限のみをアカウントに与えます。
  • この拡張機能は、有効になっている機能に必要な最低限のSQL Server権限をログインに付与します。
  • 拡張機能は、機能を無効にした場合など、不要になった権限を取り消します。
  • SQL Server用のAzure拡張機能をアンインストールしたり、最小権限を無効にすると、その拡張機能はアカウントを削除します。

前提条件

このセクションでは、最小権限を有効または無効化するために必要なシステム要件とツールを特定します。

システム要件

最小権限の設定には以下が必要です:

  • Windows Server 2016以降のバージョン。
  • SQL Server 2014(12.x)以降のバージョンです。
  • SQL Server サービス アカウントは、固定サーバー ロール sysadmin のメンバーである必要があります。
  • すべてのデータベースはオンラインで、かつ更新可能でなければなりません。

Linuxでは現在、最小権限はサポートされていません。

ツール

この記事の手順を完了するには、次のツールが必要です。

  • Azure CLI
  • arcdata Azure CLI 拡張機能バージョン 1.5.9 以降
  • Azure SQL Serverバージョン1.1.2859.223以降のバージョン用の拡張機能で、手動で最小権限を有効化できます。

最小権限を有効または無効にする

  1. Azure CLI を使用してサインインします。

    az login
    
  2. arcdata 拡張機能のバージョンを検証します。

    az extension list -o table
    

    結果にサポートされているバージョン arcdata が含まれている場合は、次のステップに進みます。

    必要に応じて、arcdata Azure CLI 拡張機能をインストールまたは更新します。

    拡張機能をインストールするには、次のようにします。

    az extension add --name arcdata
    

    拡張機能を更新するには:

    az extension update --name arcdata
    
  3. Azure CLI で最小限の権限を有効にします。

    最小権限を有効にするには、LeastPrivilege 機能フラグを true に設定します。 無効にするには、機能フラグを falseに設定してください。 このタスクを完了するには、 <resource-group> と <machine-name>の値で次のコマンドを実行します。

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    たとえば、次のコマンドを実行すると、myserver という名前のリソース グループ内の myrg という名前のサーバーに対する最小限の権限が有効になります。

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver
    

最小特権の構成を確認する

Azure Arc によって有効化された SQL Server が最小限の権限で実行されるように構成されていることを確認するには:

  1. サービスでMicrosoft SQL Server Extension Serviceを探してください。 サービスが NT SERVICE\SqlServerExtension サービスアカウントで動作しているか確認してください。

  2. サーバー上で タスクスケジューラ を開きます。 SqlServerExtensionPermissionProviderの下にMicrosoft\SqlServerExtensionという名前のイベント駆動型タスクが存在することを確認してください。

  3. SQL Server Management Studio を開き、NT SERVICE\SqlServerExtension という名前のログインを確認します。 アカウントに以下の基本権限が割り当てられているか確認してください:

    • CONNECT SQL
    • VIEW DATABASE STATE
    • VIEW SERVER STATE
  4. 次のクエリを使用してアクセス許可を検証します。

    サーバー レベルのアクセス許可を確認するには、次のクエリを実行します。

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    SELECT *
    FROM fn_my_permissions(NULL, 'SERVER');
    
    REVERT;
    

    データベース レベルのアクセス許可を確認するには、 <database-name> をいずれかのデータベースの名前に置き換え、次のクエリを実行します。

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    USE [<database-name>];
    SELECT * FROM fn_my_permissions(NULL, 'database');
    
    REVERT;
    

オプション:SQL Serverデータベースエンジンサービスアカウントを管理する

ほとんどの環境でデフォルトのサービスアカウント設定を使いましょう。 拡張操作の間にsysadmin固定サーバーロールからSQL Serverデータベースエンジンサービスアカウントを削除する必要がある場合のみ、以下の手順を使用してください。

最小特権モードを使用するには、SQL Serverデータベースエンジンサービスアカウントが各SQL Serverインスタンスのsysadmin固定サーバーロールのメンバーでなければなりません。 このメンバーシップにより、システムは自動的に権限を付与または取り消すことができます。 デフォルトでは、SQL Serverデータベースエンジンサービスアカウントはsysadmin固定サーバーの役割のメンバーです。

SQL ServerのAzure拡張は、以下の場合にDeployer.exeという一時的なプロセスを実行しますNT AUTHORITY\SYSTEM:

  • 機能を有効にしたり無効にしたりします
  • SQL Serverインスタンスの追加または削除を行います
  • 拡張機能をインストールするかアップグレードします

Deployer.exe は、SQL Serverに接続するときに、SQL Server サービス アカウントを偽装します。 接続されると、有効または無効になっている機能に応じて、サーバー ロールとデータベース ロールのアクセス許可が追加または削除されます。 このプロセスにより、SQL ServerのAzure拡張機能で必要最小限の特権が使用されるようになります。

SQL Server サービス アカウントが常に固定サーバー ロールである sysadmin のメンバーになっていないよう、このプロセスをより詳細に管理する場合は、次の手順に従います。

  1. 拡張機能のインストールやアップグレード、機能の有効化・無効化、SQL Serverインスタンスの追加・削除前に、SQL Serverデータベースエンジンサービスアカウントを一時的にsysadmin固定サーバーロールに追加してください。
  2. アクセス許可が設定されるように、Deployer.exe を少なくとも 1 回実行できるようにします。
  3. 固定サーバー ロール sysadmin からSQL Server サービス アカウントを削除します。

拡張機能のインストールやアップグレード、機能の有効化・無効化、SQL Serverインスタンスの追加・削除のたびにこの手順を繰り返します。 この手順により、 Deployer.exe は必要な最小限の権限を付与できます。

この手順は拡張アップグレードごとに繰り返す必要があるため、自動アップグレードを無効にすることを検討してください。 その後、スクリプトを使ってこれらのステップを実行し、拡張機能をアップグレードできます。

Important

SQL Server Deployer.exe のAzure拡張機能では、NT AUTHORITY\SYSTEM が、CONNECT SQL モードと standard モードの両方で、least privilege アクセス許可を持つSQL Serverに接続できる必要があります。 この要件は、プロビジョニング後に拡張機能が使用するサービス アカウントに関係なく、 Deployer.exe は常に LocalSystem アカウントで実行されるためです。

NT AUTHORITY\SYSTEM がSQL Serverに接続できない場合、Deployer.exe は、NT SERVICE\SqlServerExtension ログインを作成したり、必要なアクセス許可を付与したりできません。 最小特権モードを有効にする前に、NT AUTHORITY\SYSTEM に CONNECT SQL アクセス許可を持つアクティブなSQL Server ログインがあることを確認します。 確認のために、 前提条件をご覧ください。

SQL Serverのデータベースエンジンサービスアカウントにsysadminの固定サーバーロールがなければ、ジャストインタイム権限は付与できません。

これらの権限がいつ使用されるかの詳細については、「Azure Extension for SQL ServerのWindowsサービスアカウントと権限の設定」をご覧ください。