クラスター構成できめ細かなロールベースのアクセスに移行する

機密情報を取得するための、よりきめ細かいロールベースのアクセスのサポートに対して、いくつかの重要な変更が導入されています。 影響を受けるエンティティまたはシナリオのいずれかを使用している場合は、これらの変更の一環として、2019 年 9 月 3 日までに何らかのアクションが必要になる場合があります。

何が変わるのですか?

以前は、所有者、共同作成者、または閲覧者の Azure ロールを保有するクラスター ユーザーが HDInsight API を介してシークレットを取得できました。これは、*/read アクセス許可を持っていればだれでも利用できたためです。 シークレットは、ユーザーのロールよりもさらに高度なアクセス権を取得するために使用できる値として定義されます。 これらには、クラスター ゲートウェイ HTTP 資格情報、ストレージ アカウント キー、およびデータベースの資格情報などの値が含まれます。

2019 年 9 月 3 日以降、これらのシークレットにアクセスするには Microsoft.HDInsight/clusters/configurations/action アクセス許可が必要になり、閲覧者ロールを持つユーザーはアクセスできません。 このアクセス許可を持つロールは、共同作成者、所有者、新しい HDInsight クラスター オペレーター ロールです。

また、共同作成者または所有者の管理アクセス許可を付与されなくても、シークレットを取得することができる新しい HDInsight クラスター オペレーター ロールも導入されます。 まとめると次のようになります。

Role 以前 今後の予定
Reader - シークレットを含む読み取りアクセス。 - シークレットを除く読み取りアクセス
HDInsight クラスター オペレーター
(新しいロール)
該当なし - シークレットを含む読み取り/書き込みアクセス
Contributor - シークレットを含む読み取り/書き込みアクセス。
- すべての種類の Azure リソースを作成および管理します。
- スクリプト アクションの実行。
変更なし
所有者 - シークレットを含む読み取り/書き込みアクセス。
- すべてのリソースへのフル アクセス
- アクセスを他のユーザーに委任する。
- スクリプト アクションの実行。
変更なし

HDInsight クラスター オペレーター ロールの割り当てを特定のユーザーに追加することで、そのユーザーにクラスター シークレットへの読み取り/書き込みアクセスを付与する方法の詳細については、後のセクション「HDInsight クラスター オペレーター ロールの割り当てをユーザーに追加する」を参照してください。

私はこれらの変更の影響を受けますか?

次のエンティティとシナリオには影響があります。

  • API:/configurations エンドポイントまたは /configurations/{configurationName} エンドポイントを使用しているユーザー。
  • Azure HDInsight Tools for Visual Studio Code バージョン 1.1.1 以下。
  • Azure Toolkit for IntelliJ バージョン 3.20.0 以下。
  • Visual Studio 用 Azure Data Lake and Stream Analytics Tools バージョン 2.3.9000.1。
  • Azure Toolkit for Eclipse バージョン 3.15.0 以前。
  • .NET 用 SDK
    • バージョン 1.x または 2.x: ConfigurationsOperationsExtensions クラスから GetClusterConfigurationsGetConnectivitySettingsConfigureHttpSettingsEnableHttp、または DisableHttp メソッドを使用しているユーザー。
    • バージョン 3.x 以降: ConfigurationsOperationsExtensions クラスから GetUpdateEnableHttp、または DisableHttp メソッドを使用しているユーザー。
  • Python 用 SDK: ConfigurationsOperations クラスから get または update のメソッドを使用しているユーザー
  • Java 用 SDK: ConfigurationsInner クラスから update または get のメソッドを使用しているユーザー
  • Go 用 SDK: ConfigurationsClient 構造体から Get または Update のメソッドを使用しているユーザー
  • Az.HDInsight PowerShell バージョン 2.0.0。 ご利用のシナリオの移行手順を確認するには、以下のセクションを参照 (または上記のリンクを使用) してください。

API

次の API は変更されるか非推奨になります。

  • GET /configurations/{configurationName} (機密情報が削除される)
    • 以前は、個々の構成の種類 (機密情報を含む) を取得するために使用されていました。
    • 2019 年 9 月 3 日以降、この API 呼び出しからは、シークレットを省略した状態で個々の構成の種類が返されるようになります。 シークレットを含むすべての構成を取得するには、新しい POST/configurations 呼び出しを使用します。 ゲートウェイ設定だけを取得するには、新しい POST/getGatewaySettings 呼び出しを使用します。
  • GET /configurations (非推奨)
    • 以前は、すべての構成 (機密情報を含む) を取得するために使用されていました。
    • 2019 年 9 月 3 日以降、この API 呼び出しは非推奨となり、サポートされなくなります。 今後すべての構成を取得するには、新しい POST /configurations 呼び出しを使用します。 機密性の高いパラメーターを省略した状態で構成を取得するには、GET /configurations/{configurationName} 呼び出しを使用します。
  • POST /configurations/{configurationName} (非推奨)
    • 以前はゲートウェイの資格情報を更新するために使用されていました。
    • 2019 年 9 月 3 日以降、この API 呼び出しは非推奨となり、サポートされなくなります。 代わりに、新しい POST/updateGatewaySettings を使用してください。

次の代わりとなる API が追加されました。

  • POST /configurations
    • この API は機密情報を含むすべての構成を取得する場合に使用します。
  • POST /getGatewaySettings
    • この API はゲートウェイ設定を取得する場合に取得します。
  • POST /updateGatewaySettings
    • この API はゲートウェイ設定 (ユーザー名やパスワード) を更新する場合に使用します。

Azure HDInsight Tools for Visual Studio Code

1\.1.1 またはそれよりも古いバージョンを使用している場合は、中断を回避するために最新バージョンの Azure HDInsight Tools for Visual Studio Code に更新してください。

Azure Toolkit for IntelliJ

3\.20.0 またはそれよりも古いバージョンを使用している場合は、中断を回避するために最新バージョンの Azure Toolkit for IntelliJ プラグインに更新してください。

Azure Data Lake and Stream Analytics Tools for Visual Studio

中断を回避するために、Azure Data Lake and Stream Analytics Tools for Visual Studio のバージョン 2.3.9000.1 以降に更新してください。 更新については、Microsoft のドキュメント「Data Lake Tools for Visual Studio の更新」を参照してください。

Azure Toolkit for Eclipse

3\.15.0 以前のバージョンを使用している場合は、中断を回避するために最新バージョンの Azure Toolkit for Eclipse に更新してください。

.NET 用 SDK

バージョン 1.x および 2.x

バージョン 2.1.0 の HDInsight SDK for .NET に更新してください。 以下の変更に影響されるメソッドを使用している場合、最小限のコード変更が必要になる可能性があります。

  • ClusterOperationsExtensions.GetClusterConfigurations では、ストレージ キー (コア サイト) または HTTP 資格情報 (ゲートウェイ) などの機密性の高いパラメーターが返されなくなります

    • 機密性の高いパラメーターを含むすべての構成を取得するには、今後は ClusterOperationsExtensions.ListConfigurations を使います。 "閲覧者" ロールを持つユーザーはこのメソッドを使用できません。 これにより、クラスターの機密情報にアクセスできるユーザーをきめ細かく制御できます。
    • HTTP ゲートウェイ資格情報だけを取得するには、ClusterOperationsExtensions.GetGatewaySettings を使います。
  • ClusterOperationsExtensions.GetConnectivitySettings は非推奨になり、ClusterOperationsExtensions.GetGatewaySettings に置き換えられています。

  • ClusterOperationsExtensions.ConfigureHttpSettings は非推奨になり、ClusterOperationsExtensions.UpdateGatewaySettings に置き換えられています。

  • ConfigurationsOperationsExtensions.EnableHttpDisableHttp は非推奨になりました。 HTTP は常に有効にされるようになったので、これらのメソッドはもう必要ありません。

バージョン 3.x 以降

バージョン 5.0.0 の HDInsight SDK for .NET に更新してください。 以下の変更に影響されるメソッドを使用している場合、最小限のコード変更が必要になる可能性があります。

Python 用 SDK

バージョン 1.0.0 の HDInsight SDK for Python に更新してください。 以下の変更に影響されるメソッドを使用している場合、最小限のコード変更が必要になる可能性があります。

Java 用 SDK

バージョン 1.0.0 の HDInsight SDK for Java に更新してください。 以下の変更に影響されるメソッドを使用している場合、最小限のコード変更が必要になる可能性があります。

  • ConfigurationsInner.get では、ストレージ キー (コア サイト) または HTTP 資格情報 (ゲートウェイ) などの機密性の高いパラメーターが返されなくなります
  • ConfigurationsInner.update は非推奨となりました。

Go 用 SDK

バージョン 27.1.0 の HDInsight SDK for Go に更新してください。 以下の変更に影響されるメソッドを使用している場合、最小限のコード変更が必要になる可能性があります。

  • ConfigurationsClient.get では、ストレージ キー (コア サイト) または HTTP 資格情報 (ゲートウェイ) などの機密性の高いパラメーターが返されなくなります
    • 機密性の高いパラメーターを含むすべての構成を取得するには、今後は ConfigurationsClient.list を使います。 "閲覧者" ロールを持つユーザーはこのメソッドを使用できません。 これにより、クラスターの機密情報にアクセスできるユーザーをきめ細かく制御できます。
    • HTTP ゲートウェイ資格情報だけを取得するには、ClustersClient.get_gateway_settings を使います。
  • ConfigurationsClient.update は非推奨になり、ClustersClient.update_gateway_settings に置き換えられています。

Az.HDInsight PowerShell

中断を回避するために Az PowerShell バージョン 2.0.0 以降に更新してください。 以下の変更に影響されるメソッドを使用している場合、最小限のコード変更が必要になる可能性があります。

  • Grant-AzHDInsightHttpServicesAccess は非推奨になり、新しい Set-AzHDInsightGatewayCredential コマンドレットに置き換えられています。
  • ストレージ キーに対するきめ細かいロールベースのアクセスをサポートするために、Get-AzHDInsightJobOutput は更新されました。
    • HDInsight クラスター オペレーター、共同作成者、または所有者のロールを持つユーザーには影響ありません。
    • 閲覧者ロールのみを持つユーザーは、DefaultStorageAccountKey パラメーターを明示的に指定する必要があります。
  • Revoke-AzHDInsightHttpServicesAccess は非推奨となりました。 HTTP は常に有効になったので、このコマンドレットはもう必要ありません。 詳細については、az.HDInsight の移行ガイドを参照してください。

HDInsight クラスター オペレーター ロールの割り当てをユーザーに追加する

所有者ロールを保有するユーザーは、機密の HDInsight クラスター構成の値 (クラスター ゲートウェイ資格情報やストレージ アカウント キーなど) への読み取り/書き込みアクセスを求めるユーザーに HDInsight クラスター オペレーター ロールを付与することができます。

Azure CLI の使用

このロール割り当てを追加するには、Azure CLI 内で az role assignment create コマンドを使用するのが最も簡単な方法です。

注意

このコマンドは、所有者ロールを保有するユーザーによって、それらのアクセス許可が付与される場合にのみ、実行される必要があります。 --assignee は、サービス プリンシパルの名前、または HDInsight クラスター オペレーター ロールの割り当て先とするユーザーの電子メール アドレスです。 アクセス許可が不十分であることを示すエラーが表示される場合は、「FAQ」をご覧ください。

リソース (クラスター) レベルでロールを付与します。

az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

リソース グループ レベルでロールを付与します。

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>

サブスクリプション レベルでロールを付与します。

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com

Azure ポータルの使用

Azure portal を使用して、HDInsight クラスター オペレーター ロールの割り当てをユーザーに追加することもできます。 「Azure portal を使用して Azure ロールを割り当てる」のドキュメントを参照してください。

よく寄せられる質問

API 要求やツールを更新した後、403 (禁止) の応答が表示されるのはなぜですか?

クラスター構成は、細かく設定したロールベースのアクセス制御の背後にあり、これらにアクセスするには Microsoft.HDInsight/clusters/configurations/* アクセス許可が必要です。 このアクセス許可を取得するには、構成にアクセスしようとしているユーザーまたはサービス プリンシパルに、HDInsight クラスター オペレーター、共同作成者、または所有者ロールを割り当てます。

Azure CLI コマンドを実行して HDInsight クラスター オペレーター ロールを別のユーザーまたはサービス プリンシパルに割り当てると、"操作を完了するための十分な特権がありません" と表示されるのはなぜですか?

コマンドを実行するユーザーまたはサービス プリンシパルが、担当者のオブジェクト ID を検索するには、所有者ロールだけでなく、Microsoft Entra の十分なアクセス許可を持っている必要があります。 このメッセージは、Microsoft Entra のアクセス許可が不十分であることを示します。 -–assignee 引数を –assignee-object-id に置き換えて、名前の代わりにパラメーターとして担当者のオブジェクト ID (またはマネージド ID の場合は、プリンシパル ID) を指定します。 詳細については、az role assignment create ドキュメントの「省略可能なパラメーター」セクションを参照してください。

それでもうまくいかない場合は、Microsoft Entra の管理者に連絡して、適切なアクセス許可を取得してください。

操作を行わない場合、どうなりますか?

2019 年 9 月 3 日以降、GET /configurationsPOST /configurations/gateway の呼び出しによって、情報が返されなくなります。また、GET /configurations/{configurationName} 呼び出しでは、ストレージ アカウント キーやクラスター パスワードなどの機密性の高いパラメーターは返されなくなります。 これは、対応する SDK メソッドと PowerShell コマンドレットにも当てはまります。

説明した Visual Studio、VSCode、IntelliJ、または Eclipse 用のいずれかのツールの以前のバージョンを使っている場合は、更新するまで機能しなくなります。

詳細については、自分のシナリオに対応するこのドキュメントのセクションを参照してください。