Azure Container Registry (ACR) へのアクセスを管理する

完了

Azure Container Registry サービスは、Azure コンテナー レジストリにさまざまなレベルのアクセス許可を提供する 組み込みの Azure ロール のセットをサポートします。 Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、たとえばコンテナー イメージをプッシュまたはプルするために、レジストリを操作する必要があるユーザー、サービス プリンシパル、またはその他の ID に特定のアクセス許可を割り当てます。 レジストリに対するさまざまな操作権限を細かく設定したカスタム ロールを定義することもできます。

ロール/アクセス許可 Resource Manager へのアクセス レジストリの作成/削除 イメージのプッシュ イメージのプル イメージ データを削除する ポリシーの変更 イメージの署名
所有者 X X X X X X
Contributor X X X X X X
Reader X X
AcrPush X X
AcrPull X
AcrDelete X
AcrImageSigner X

ロールを割り当てる

Azure portal、Azure CLI、Azure PowerShell、またはその他の Azure ツールを使用できます。 サービス プリンシパルを作成する場合は、コンテナー レジストリなどの Azure リソースへのアクセスとアクセス許可も構成します。

ユーザーとサービスを区別する

アクセス許可が適用されるときのベスト プラクティスは常に、タスクを実行するための最も限定的なアクセス許可のセットを人物またはサービスに付与することです。 以下のアクセス許可セットは、人とヘッドレス サービスによって使用される可能性がある機能のセットに対応します。

CI/CD ソリューション

CI/CD ソリューションから docker build コマンドを自動化する際には、docker push 機能が必要です。 これらのヘッドレス サービス シナリオでは、AcrPush ロールを割り当てることをお勧めします。 このロールでは、さらに範囲の広い共同作成者ロールとは異なり、アカウントによる他のレジストリ操作の実行または Azure Resource Manager へのアクセスは禁止されます。

コンテナー ホスト ノード

同様に、コンテナーを実行するノードでは、AcrPull ロールは必要ですが、閲覧者の機能は必要ないはずです。

Visual Studio Code Docker 拡張機能

Visual Studio Code Docker 拡張機能などのツールでは、使用可能な Azure コンテナー レジストリの一覧を取得するために、追加のリソース プロバイダー アクセスが必要です。 この場合は、閲覧者または共同作成者ロールへのアクセスをユーザーに提供します。 これらのロールは、docker pull、docker push、az acr list、az acr build などの機能を許可します。

Resource Manager へのアクセス

Azure portal と Azure コマンド ライン インターフェイスでのレジストリ管理には、Azure Resource Manager へのアクセスが必要です。 たとえば、az acr list コマンドを使用してレジストリの一覧を取得するには、このアクセス許可セットが必要です。

レジストリの作成と削除

Azure コンテナー レジストリを作成および削除する権限です。

イメージのプッシュ

レジストリから未検疫イメージの docker pull を行う、または Helm チャートなどの別のサポートされている成果物のプルを行う権限。 承認された ID を使用してレジストリで認証を行う必要があります。

イメージ データを削除する

レジストリから、コンテナー イメージを削除する機能、または Helm チャートなどの他のサポートされている成果物を削除する機能。

ポリシーの変更

レジストリでポリシーを構成する権限です。 ポリシーには、イメージの削除、検疫の有効化、イメージの署名が含まれます。

イメージの署名

イメージに署名する権限であり、通常は、サービス プリンシパルを使用する自動化されたプロセスに割り当てられます。 通常、このアクセス許可は、レジストリへの信頼できるイメージのプッシュを許可するイメージのプッシュと組み合わされます。

カスタム ロール

他の Azure リソースと同様に、Azure Container Registry に対するきめ細かいアクセス許可を持つカスタムロールを作成できます。 次に、ユーザー、サービスプリンシパル、またはレジストリと対話する必要がある他の ID にカスタムロールを割り当てます。