Azure AKS(Azure Kubernetes Service)を統合することによりセキュアなクラスタ環境を構築することができますが、Azure Cloud Shellで実行した際に予期せぬエラーが発生したので、その解決法を残しておこうと思います。

ADとAKSの統合手順
今回はAKSクラスタの作成手順は省きます。
また、AKSとADの統合はMicrosoft公式の以下の手順に則り実行していきます。
https://docs.microsoft.com/ja-jp/azure/aks/azure-ad-integration-cli
AKSと統合するために必要なサーバーアプリケーションコンポーネントを作成します。
※今回はAKSクラスタ名を「myakscluster」とします。
$ serverApplicationId=$(az ad app create \
--display-name "${aksname}Server" \
--identifier-uris "https://${aksname}Server" \
--query appId -o tsv)
作成したサーバーアプリケーションコンポーネント更新しグループメンバーシップを要求します。
$ az ad app update --id $serverApplicationId --set groupMembershipClaims=All
次にAzureプラットフォーム内でユーザを認証するために使用するサービスプリンシパルを作成します。コマンド実行後、作成されたサービスプリンシパルの情報が表示されます。
$ az ad sp create --id $serverApplicationId
サービス プリンシパルのシークレットを取得し、AKSクラスタデプロイ時に使用するための変数として「serverApplicationSecret」に割り当てます。
$ serverApplicationSecret=$(az ad sp credential reset \
--name $serverApplicationId \
--credential-description "AKSPassword" \
--query password -o tsv)
AKSとAzure ADを統合にするにあたり、作成したサービスプリンシパルに以下のアクセス許可を付与します。
$ az ad app permission add \
--id $serverApplicationId \
--api 00000003-0000-0000-c000-000000000000 \
--api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope 06da0dbc-49e2-44d2-8312-53f166ab848a=Scope 7ab1d382-f21e-4acd-a863-ba3e13f7da61=Role
前の手順で割り当てたアクセス許可をサーバー アプリケーションコンポーネントに付与します。
$ az ad app permission grant --id $serverApplicationId --api 00000003-0000-0000-c000-000000000000
そして管理者の同意を別途必要とする可能性のある情報を Azure AD アプリケーションが要求するためのアクセス許可を追加し、サーバーアプリケーションコンポーネント設定は完了!のはずですが、、、
$ az ad app permission admin-consent --id $serverApplicationId
CLIInternalError: The command failed with an unexpected error. Here is the traceback:
400 Client Error: Bad Request for url: http://localhost:50342/oauth2/token
エラーが返ってきますね、、、、、
原因
ここまでの手順で何が問題だったのか、何かしら操作に不備があったのか調査しましたが原因究明できず、、
そこでMicrosoftサポートに問い合わせたところ思わぬ結果が返ってきました。
「現時点で Azure Cloud Shell を利用した場合に、該当コマンドが、“400 Client Error: Bad Request” により失敗する問題が発生していることを確認いたしました。」
$ az ad app permission admin-consent --id $serverApplicationId
おおおおお、、、、
解決法
今回の原因はAzure Cloud Shellを使用してしまったことが原因とのことなので、ローカルPCにAzure CLIをインストールしサブスクリプション認証を通してPowerShellから実行すれば問題ないとのことでした。。。
AzureCLIをローカルPCにインストールする手順は以下を参考にさせていただきました。
実際に以下の参考資料をもとに実行し、再度統合手順を実施したところ、問題なく設定することができました!
今回の件について多少めんどくさい&不満点をあげるとすれば
・PowerShellでの実行なので統合手順のコマンドは「$変数=文字列」に変更しなければいけない
・そもそも公式ドキュメントで取り上げといてほしいな、、、という
ともかく不思議な問題点ですが、無事解決することができました。
PS. AzureのKubernetesサービスからもADとの統合が設定できますが、こちらも問題なく設定できました。。。