SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server IaaS Agent 拡張機能の新しいアクセス許可モデルと従来の管理モードの削除

leave a comment

SQL Server IaaS Agent 拡張機能で新しいアクセス許可モデルの提供が開始され、「完全な sysadmin 権限」「最小特権モデル (原則) 」(least privilege mode) という二種類のアクセス許可が使用されるようになりました。

従来までのアクセス許可モデルは「完全な sysadmin 権限」と呼ばれるものとなり、現状では、

  • 2022年10月より前に Azure Marketplace 経由でデプロイされた SQL Server VM
  • Azure VM に SQL Server をセルフインストールした環境で SQL Server IaaS Agent 拡張機能をインストールした環境

で使用されているものとなります。

上記以外の環境や、自動登録で導入された IaaS Agent 拡張機能については「最小特権の原則」で導入が行われるようになりました。

当初から提供されていた「完全な sysadmin 権限によるアクセス許可モデル」では次の 3 種類の管理モードが提供されていました。

  • エージェント無し
    • Windows Server 2008 にインストールされた SQL Server 2008 / R2 に対してのみ使用可能
    • ライセンスタイプの指定のみ使用することができる
  • 軽量モード
    • ライセンス変更 (PAYG / AHUB / DR) の機能のみを使用することができる
    • FCI / 複数インスタンスの SQL Server では軽量モードのみが使用できる
  • 完全モード
    • IaaS Agent の全機能を使用することができる
    • 2021年9 月から再起動不要で完全モードにアップグレード可能となった

新しく提供が開始された「最小特権モデル」については、管理モードは削除され、使用される機能に応じたカスタムロールが使用され、機能に応じて必要な権限が付与されるようになりました。

これにより「最小特権モデル」では、管理モードが削除され軽量や完全モードという管理がなくなりました。

完全な sysadmin 権限と最小特権モデルの違い

投稿を書いている時点では、SQL Server をセルフインストールした環境に「New-AzSQLVM」で IaaS Agent 拡張機能をインストールした場合は管理モードを指定することができるため、現時点では 完全な sysadmin 権限による管理を継続して使用することができるようです。

SQL Server IaaS Agent 拡張機能は、次の 2 種類のサービスで構成され、各サービスの説明については、

インストールサービス アカウントの変更 に記載されています。

  • Microsoft SQL Server IaaS Agent (SQLIaaSExtension)
    • SQL Server IaaS Agent 拡張機能のメインサービス
    • 「Local System アカウント」で実行される
  • Microsoft SQL Server IaaS Query Service (SqlIaaSExtensionQuery)
    • SQL Server 内で、IaaS Agent 拡張機能がクエリを実行する際のヘルパーサービス
    • 「NT Service\SqlIaaSExtensionQuery」で実行される

完全な sysadmin 権限を使用した場合に付与される SQL Server のロール

「完全な sysadmin 権限」では、完全モードのエージェントをインストールする際には、Microsoft SQL Server IaaS Agent から、次のクエリが実行され、Microsoft SQL Server Query Service に sysadmin の権限が付与されていました。

exec sys.sp_addsrvrolemember @loginame=N'NT Service\SQLIaaSExtensionQuery',@rolename=N'sysadmin'

 

SQL Server IaaS Agent 拡張機能では、様々な機能が提供されており、SQL Server にも設定を投入する必要がありますが、この際には、IaaS Query Service が SQL Server に対してクエリの実行を行います。

完全な sysadmin 権限では、サービスが sysadmin ロールのメンバーとなっていますので、SQL Server に対してすべての操作を行うことができ、実行する必要のある操作に対して広い範囲での権限が付与されていた状態となっていました。

最小特権モデルでは、操作に必要となる権限のみが付与されることになります。

最小特権モデルへの変更

従来からの sysadmin 権限モデルを使用している場合も、アクセス許可モデル に記載されている操作のとおり、「SQL 仮想マシン」のブレードから最小特権モデルに変更することができます。

image

私が検証したタイミングでは、ポータルの言語が日本語の言語の設定ではエラーとなり、ポータルの言語をEnglish にしておく必要がありそうでした…。

最小限の特権モデルに切り替えようとした場合に、「InvalidResourceIdSegment」のエラーが発生した場合は、ポータルの言語を変更してみると良いかもしれません。

ポータルの操作では、最小特権モデルに変更すると、Enabled で固定されてしまい、完全な sysadmin 権限に切り替えるためには、IaaS Agent 拡張機能を削除して、再導入する必要がありそうでした。

モード切替時には SQL Server のサービスの再起動は発生していないようでした。

 

最小特権モデルで付与される SQL Server のロール

最小特権モデルを有効化すると、処理の中で sysadmin サーバーロールのメンバーとして「NT Service\SQLIaaSExtensionQuery」が登録されている場合、メンバーから削除 (DROP MEMBER) が実行され、完全な sysadmin 権限の剥奪が行われています。

最小特権モデルで使用されるロールについては、アクセス許可モデル に記載されています。

使用されるロールについてはすべてが自動的に作成されるのではなく、使用する機能に応じた必要となるロールのみが作成されているようです。作成したロールのメンバーとしては「NT Service\SQLIaaSExtensionQuery」が追加されています

私が使用している環境では、最小特権モデルに切り替えた際には、「SqlIaaSExtension_StatusReporting」のみが作成されていました。

image

これらの操作は「Microsoft SQL Server IaaS Agent」で実行されており、管理者系の権限が必要となる場合は、Local System で実行されている Microsoft SQL Server IaaS Agent が活用されてるようです。

 

従来の管理モードは削除され、Marketplace の新規構築環境のアクセス許可モデルのデフォルトも変更されたということで、今後 SQL Server IaaS Agent 拡張機能のアクセス許可モデルは最小特権モデルが基本になるのではと思います。

最小特権モデルではどのような特徴があるのか把握しておくと良いのではないでしょうか。

Share

Written by Masayuki.Ozawa

3月 26th, 2023 at 1:55 pm

Posted in SQL Server

Tagged with

Leave a Reply