Azure Container Registryにて管理者ユーザーを有効にしないままイメージをpullする

はじめに

Azure Container Registryには設定項目に「アクセスキー」というものがあり、ここの管理者ユーザーを有効化することでIDやパスワードを取得することができます。

ただ、管理者アカウントは権限が強すぎるため、あまり有効化はしたくないものです。ここで、管理者アカウントを有効にしないままイメージをpullする方法を試しましたのでここで記します。

サービスプリンシパルを作成する

まずは、Azure Container Registryにアクセスするためのサービスプリンシパルを作成します。具体的には以下のコマンドを実行します。

$ az ad sp create-for-rbac --name サービスプリンシパル名 --scopes $(az acr show --name Azure Container Registryの名前 --query id --output tsv) --role acrpull

私の場合、CloudShell(bash)上で実行しました。

結果として以下の情報が得られるので、メモしておきます。

{
  "appId": "appIdの値",
  "displayName": "サービスプリンシパル名",
  "password": "パスワードの値",
  "tenant": "テナントのID"
}

変数に値を格納しておきます。

$ appId=上記のappIdの値
$ appPassword=上記のパスワードの値

Azure Container Instanceを作成する

次にAzure Container Instanceを作成します。具体的には以下のコマンドを作成します。

$ az container create --name Azure Container Instanceの名前 --resource-group リソースグループ名 --ports 8080 --image イメージ名 --registry-login-server Azure Container RegistryのURL --registry-username $appID --registry-password $appPassword --ip-address Public

コマンドの詳細は以下を参照。

learn.microsoft.com

数分待つと、無事Azure Container Instanceが作成できました。

ちなみに、Azure Portal上でAzure Container Instanceを作成しようとすると管理者ユーザーを有効にすることが求められます。