Azure Container Registry を使用すると、信頼された Azure サービスを選択して、ネットワーク アクセス規則で構成されたレジストリにアクセスできます。 信頼されたサービスを許可すると、信頼されたサービス インスタンスはレジストリのネットワーク規則を安全にバイパスし、イメージのプルやプッシュなどの操作を実行できます。 この記事では、ネットワーク制限付き Azure コンテナー レジストリで信頼されたサービスを有効にして使用する方法について説明します。
この記事のサンプル コマンドは、Azure Cloud Shell または Azure CLI のローカル インストールを使用して実行します。 バージョン 2.18 以降を使用してローカルで実行します。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
制限事項
- 信頼できるサービスを使用する特定のレジストリにアクセスするシナリオでは、Azure リソースのマネージド ID が必要です。 ユーザー割り当てマネージド ID がサポートされている点を除き、システム割り当て ID のみを使用できます。
- 信頼されたサービスを許可することは、サービス エンドポイントで構成されたコンテナー レジストリには適用されません。 この機能は、プライベート エンドポイントで制限されているか、パブリック IP アクセス ルールが適用されているレジストリにのみ影響します。
信頼されたサービスについて
Azure Container Registry には、レジストリへのアクセスを制限する複数のネットワーク構成をサポートする階層型セキュリティ モデルがあります。 これらの構成には、次のものが含まれます。
- Azure Private Link によるプライベート エンドポイント。 構成した場合、レジストリのプライベート エンドポイントは、プライベート IP アドレスを使用して、仮想ネットワーク内のリソースにのみアクセスできます。
- レジストリのファイアウォール規則。これは、特定のパブリック IP アドレスまたはアドレス範囲からのみレジストリのパブリック エンドポイントへのアクセスを許可します。 プライベート エンドポイントの使用時には、パブリック エンドポイントへのすべてのアクセスをブロックするようにファイアウォールを構成することもできます。
仮想ネットワークにレジストリをデプロイしたり、ファイアウォール規則を使用してレジストリを構成したりすると、それらのソースの外部からユーザーまたはサービスへのアクセスが拒否されます。
複数のマルチテナント Azure サービスは、これらのレジストリ ネットワーク設定に含めることができないネットワークから動作します。 その結果、これらのサービスは、イメージのプルやレジストリへのプッシュなどの操作を実行できません。 特定のサービス インスタンスを "信頼済み" として指定することで、レジストリ所有者は、選択された Azure リソースが、レジストリ操作を実行するために、レジストリのネットワーク設定を安全にバイパスできるようにすることができます。
信頼できるサービス
レジストリの信頼されたサービスを許可する設定が有効になっている場合 (既定)、次のサービスのインスタンスはネットワーク制限付きコンテナー レジストリにアクセスできます。 今後、さらに多くのサービスが追加される予定です。
ここで示されている場合、信頼されたサービスによるアクセスでは、サービス インスタンスでのマネージド ID の追加の構成、RBAC ロールの割り当て、およびレジストリによる認証が必要になります。 手順の例については、この記事の後半の「信頼されたサービスのワークフロー」を参照してください。
信頼できるサービス | サポートされる使用シナリオ | RBAC ロールによるマネージド ID の構成 |
---|---|---|
Azure Container Instances (アジュール コンテナー インスタンス) | マネージド ID を使用した Azure Container Registry から Azure Container Instances へのデプロイ | システム割り当て ID またはユーザー割り当て ID |
Microsoft Defender for Cloud | Microsoft Defender for container registries による脆弱性スキャン | いいえ |
機械学習 | カスタムの Docker コンテナー イメージを使用して、Machine Learning ワークスペースでモデルをデプロイまたはトレーニングする | はい |
Azure Container Registry(アジュール コンテナ レジストリ) | ネットワークで制限された Azure Container Registry との間でイメージをインポートする | いいえ |
注
現時点では、 allow trusted services
設定を有効にすることは App Service には適用されません。
信頼されたサービスを許可する - CLI
既定では、信頼されたサービスを許可する設定は、新しい Azure コンテナー レジストリで有効になっています。 az acr update コマンドを実行して、設定を無効または有効にします。
無効にするには:
az acr update --name myregistry --allow-trusted-services false
既存のレジストリ、または設定が既に無効になっているレジストリで設定を有効にするには、次のようにします。
az acr update --name myregistry --allow-trusted-services true
信頼されたサービスを許可する - ポータル
既定では、信頼されたサービスを許可する設定は、新しい Azure コンテナー レジストリで有効になっています。
ポータルで設定を無効にするか、再度有効にするには、次のようにします。
- ポータルで、自分のコンテナー レジストリに移動します。
- [設定] で [ネットワーク] を選択します。
- [Allow public network access](パブリック ネットワーク アクセスを許可する) で、 [選択されたネットワーク] または [無効] を選択します。
- 次のいずれかの手順を実行します。
- 信頼されたサービスによるアクセスを無効にするには、 [ファイアウォールの例外] で、 [信頼された Microsoft サービスによるこのコンテナー レジストリへのアクセスを許可] のチェックをオフにします。
- 信頼されたサービスを許可するには、 [ファイアウォールの例外] で、 [信頼された Microsoft サービスによるこのコンテナー レジストリへのアクセスを許可] のチェックをオンにします。
- [保存] を選択します。
信頼されたサービスのワークフロー
信頼されたサービスのインスタンスが、ネットワーク制限付きコンテナー レジストリにアクセスできるようにするための一般的なワークフローをここに示します。 このワークフローは、サービス インスタンスのマネージド ID を使用してレジストリのネットワーク規則をバイパスする場合に必要です。
- Azure Container Registry の信頼できるサービスのいずれかのインスタンスでマネージド ID を有効にします。
- ID に、レジストリに対する Azure ロール を割り当てます。 たとえば、
Container Registry Repository Reader
( ABAC 対応レジストリの場合) またはAcrPull
(ABAC 以外のレジストリの場合) を割り当てます。 - 信頼されたサービスによるアクセスを許可するように、ネットワーク制限付きレジストリの設定を構成します。
- ID の資格情報を使用して、ネットワーク制限付きレジストリで認証します。
- レジストリからイメージをプルするか、ロールで許可されている他の操作を実行します。
次のステップ
- 仮想ネットワーク内のプライベート エンドポイントを使用してレジストリへのアクセスを制限するには、「Azure コンテナー レジストリ用に Azure Private Link を構成する」を参照してください。
- レジストリのファイアウォール規則を設定するには、「パブリック IP ネットワーク ルールを構成する」を参照してください。