すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:シークレットを使用せずに ACR インスタンスからイメージをプルする

最終更新日:Nov 09, 2025

Container Compute Service (ACS) を使用すると、シークレットを使用せずに Container Registry (ACR) からイメージをプルできます。これにより、効率とセキュリティが向上します。このトピックでは、シークレットを使用せずに ACS クラスター内の ACR インスタンスからイメージをプルする方法について説明します。

背景情報

Container Registry (ACR) は、標準的なクラウドネイティブアーティファクトのセキュアなホスティングと効率的な配信を提供します。ACR には、Personal Edition や Enterprise Edition などのさまざまなエディションがあります。詳細については、「Container Registry とは」をご参照ください。ACS は、さまざまな ACR エディションに対してパスワードなしのイメージプルを設定するための統一されたメソッドを提供します。

ACS クラスターにパスワードなしのサービスを設定すると、ACS は ACR からイメージをプルするための認証情報を自動的に提供します。これにより、Pod の作成プロセスが簡素化され、パスワードの漏洩が防止され、セキュリティが強化されます。

説明

パスワードなしのイメージプルは、Docker Hub やセルフマネージドリポジトリなど、ACR 以外のリポジトリからのイメージにはサポートされていません。

前提条件

ACS クラスターの ACR からのパスワードなしのイメージプルを設定する前に、次のタスクを完了してください:

  1. ACS クラスターを作成します。詳細については、「ACS クラスターの作成」をご参照ください。

  2. ACR インスタンスを作成し、そのイメージリポジトリとイメージを設定します。

  3. ACR Enterprise Edition インスタンスを使用する場合は、そのアクセス方式を設定します。

    デフォルトでは、新しい ACR Enterprise Edition インスタンスはどのネットワークにも接続されていません。インターネットまたは VPC (VPC) 経由でインスタンスへのアクセスを許可するには、アクセスコントロールリスト (ACL) を設定する必要があります。

    • パブリックネットワークアクセス: パブリックネットワークアクセスを有効にすると、パブリックエンドポイントを使用してインターネット経由で Enterprise Edition インスタンス内のイメージにアクセスできます。リージョンをまたいでイメージにアクセスできます。詳細については、「インターネット経由のアクセスの設定」をご参照ください。

    • VPC アクセス: VPC 経由で ACR Enterprise Edition インスタンスにアクセスするには、必要な権限を付与する必要があります。詳細については、「VPC 経由のアクセスの設定」をご参照ください。

仕組み

パスワードなしのコンポーネントは、コンソールから設定を読み取り、非公開イメージをプルします。コンポーネントを設定すると、クラスター内にシークレットが自動的に作成されます。次に、コンポーネントはシークレットを構成で指定したサービスアカウントに関連付けます。デフォルトでは、このサービスアカウントを使用するすべての Pod は、生成されたシークレットを使用してイメージをプルします。これにより、パスワードなしでイメージをプルできます。

パスワードなしのコンポーネントのインストールと設定

  1. ACS コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、ターゲットクラスターを見つけてその ID をクリックします。左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [アドオン] ページで、[セキュリティ] タブをクリックします。[aliyun-acr-credential-helper] を見つけて、[インストール] をクリックします。

    image

  4. [パラメーター] ダイアログボックスで、[AcrInstanceInfo] の右側にある [追加] をクリックして、1 つ以上の ACR インスタンスに関する情報を追加します。次の例の説明に従ってパラメーターを設定し、[確認] をクリックします。

    1. [AcrInstanceInfo] を追加します。

      説明

      デフォルトのシナリオの構成は次のとおりです:

      • ACR Personal Edition インスタンスと同期するには、[AcrInstanceInfo] のデフォルト構成を使用します。

      • ACR Enterprise Edition インスタンスと同期するには、[instanceID] を指定し、他の [AcrInstanceInfo] 項目のデフォルト構成を使用します。

      キー

      説明

      instanceID

      ACR インスタンスの ID。

      Container Registry コンソールで作成されたインスタンスを見つけます。

      • Enterprise Edition: [インスタンス情報] ページで、[インスタンス ID] を見つけることができます。値は cri- で始まる文字列です。

      • Personal Edition: Personal Edition インスタンスのパスワードなしのプルを設定するには、このパラメーターを空のままにします。

      デフォルト値は空です。これにより、現在のリージョンの Personal Edition インスタンスが構成されます。

      regionID

      ACR インスタンスのリージョン ID。

      ACR インスタンスが存在するリージョンの ID。たとえば、中国 (杭州) リージョンのインスタンスのリージョン ID は cn-hangzhou です。

      デフォルト値は ACS クラスターのリージョンです。ACR インスタンスが ACS クラスターと同じリージョンにある場合は、このパラメーターを空のままにします。

      domains

      ACR インスタンスへのアクセスに使用されるドメイン名。

      イメージへのアクセスに使用されるドメイン名。複数のドメイン名はコンマ (,) で区切ります。

      デフォルト値には、ACR インスタンスの [instanceID] に対応するすべてのドメイン名が含まれます。これには、パブリックエンドポイント (registry.*)、VPC エンドポイント (registry-vpc.*)、および内部の同一リージョンエンドポイント (registry-internal.*) が含まれます。

      assumeRoleARN

      (オプション) イメージリポジトリのオーナーの RAM ロールの [ARN]アカウント間のイメージプルの設定 のステップ 4 で取得できます。アカウント間でイメージをプルしない場合は、このパラメーターを空のままにします。

      例: acs:ram::123456789012****:test-rrsa-acr

      デフォルト値は空です。

      expireDuration

      (オプション) アカウント間のシナリオにおける一時的な認証情報の有効期間。アカウント間でイメージをプルしない場合は、このパラメーターを空のままにします。

      重要

      expireDuration の値は、アカウント間のイメージプルの設定 のステップ 4 で設定したイメージリポジトリのオーナーのロールの [最大セッション期間] 以下である必要があります。

      デフォルト値は 3600 です。

      rrsaRoleARN

      (オプション) ACS クラスターの RAM ロールの [ARN]アカウント間のイメージプルの設定 のステップ 3 で取得できます。アカウント間でイメージをプルしない場合は、このパラメーターを空のままにします。

      例: acs:ram::987654321012****:demo-role-for-rrsa

      デフォルト値は空です。

      rrsaOIDCProviderRoleARN

      (オプション) ACS クラスターの RRSA OpenID Connect (OIDC) [プロバイダー ARN]アカウント間のイメージプルの設定 のステップ 2 で取得できます。アカウント間でイメージをプルしない場合は、このパラメーターを空のままにします。

      例: acs:ram::987654321012****:oidc-provider/ack-rrsa-abcd1234****

      デフォルト値は空です。

    2. 他のパラメーターを設定します。

      キー

      説明

      Enable RRSA

      このチェックボックスを選択して、RAM Roles for Service Accounts (RRSA) を有効にします。RRSA 関連の構成を完了する必要があります。

      このオプションはデフォルトでは選択されていません。RRSA 関連のパラメーターを設定し、このチェックボックスを選択すると、アカウント間でイメージをプルできます。

      watchNamespace

      パスワードなしでイメージをプルする名前空間。

      デフォルト値は default です。値を all に設定すると、すべての名前空間からパスワードなしでイメージをプルできます。複数の名前空間を指定するには、コンマ (,) で区切ります。

      説明

      ビジネス名前空間を指定してください。システムコンポーネントのイメージプルの失敗を防ぐために、all またはシステムコンポーネントの名前空間を指定しないでください。

      serviceAccount

      パスワードなしのコンポーネントが適用されるサービスアカウント。

      デフォルト値は default です。

      説明

      複数のサービスアカウントを指定するには、コンマ (,) で区切ります。このパラメーターをアスタリスク (*) に設定すると、指定された名前空間内のすべてのサービスアカウントがサポートされます。

      expiringThreshold

      ローカルにキャッシュされた認証情報の有効期限のしきい値。

      デフォルト値は 15m です。

      説明

      15m を使用することをお勧めします。これは、認証情報が有効期限切れになる 15 分前に更新されることを意味します。

      notifyEmail

      パスワードなしのコンポーネントによって生成されるシークレット内のメールタグ。

      デフォルト値は xxx@aliyun.com です。

アカウント間のイメージプルの設定

RRSA を使用してアカウント間でイメージをプルする

RAM Roles for Service Accounts (RRSA) 機能は、ACS クラスター内で Pod レベルの権限の隔離を提供します。ACS クラスターで RRSA 機能を有効にし、承認されたロールの ARN を異なるイメージリポジトリのオーナーに配布することで、パスワードなしのコンポーネントはアカウント間で ACR イメージをプルできます。

RRSA 機能は、ACR Enterprise Edition (Basic、Standard、および Premium) インスタンスからのイメージのプルのみをサポートします。

重要
  • RRSA を有効にすると、コンポーネントが生成する認証情報は、Personal Edition インスタンスからの非公開イメージのプルをサポートしません。このトピックで説明されている他の認証方式もサポートされていません。

  • パスワードなしのアドオンの RRSA 設定を構成する前に、クラスターで RRSA を有効にする必要があります。これらのステップを誤った順序で実行した場合、RRSA 機能が有効になるように、構成完了後にアドオンの Pod を削除する必要があります。

  1. ACS クラスターで RRSA 機能を有効にします。詳細については、「RRSA 機能を有効にする」をご参照ください。

  2. ACS は、クラスターの RRSA OpenID Connect (OIDC) プロバイダーを自動的に作成します。ACS コンソールのクラスター詳細ページで、[基本情報] > [セキュリティと監査] > [RRSA OIDC] を選択して、[プロバイダー URL][プロバイダー ARN] を表示します。

    image

  3. クラスターのオーナーは、OIDC プロバイダーを使用して RAM ロールを設定し、ロールを偽装する権限を付与します。

    1. OIDC プロバイダーを使用して RAM ロールを作成するか、既存の RAM ロールに OIDC プロバイダーを関連付けます。これにより、パスワードなしのコンポーネントは、ロールの権限を使用して OpenAPI にアクセスできます。

      OIDC プロバイダーを使用して RAM ロールを作成する

      1. Alibaba Cloud アカウントを使用して Resource Access Management (RAM) コンソールにログインします。

      2. 左側のナビゲーションウィンドウで、[ID 管理] > [ロール] を選択します。[ロール] ページで、[ロールの作成] をクリックします。

      3. [ロールの作成] ページで、[エディターに切り替え] をクリックします。[プリンシパル][ID プロバイダー] に設定します。次の表の説明に従ってロール情報を設定し、[確認] をクリックします。

      4. この例では、次の構成を使用します。

        パラメーター

        説明

        ID プロバイダータイプ

        OIDC

        ID プロバイダーの選択

        acs-rrsa-<cluster_id>。<cluster_id> はクラスター ID です。

        条件

        • [oidc:iss]: デフォルト値を保持します。

        • [oidc:aud]: デフォルト値を保持します。

        • [oidc:sub]: 条件オペレーターを [StringEquals] に設定します。値を [system:serviceaccount:<namespace>:<serviceAccountName>] 形式で設定します。

          • <namespace>: アプリケーションが存在する名前空間。

          • <serviceAccountName>: サービスアカウントの名前。

          パスワードなしのアドオンの要件として、system:serviceaccount:kube-system:aliyun-acr-credential-helper を入力する必要があります

      5. [ロールの作成] ダイアログボックスで、[ロール名] を demo-role-for-rrsa に設定します。[確認] をクリックします。

      既存の RAM ロールに OIDC プロバイダーを関連付ける

      1. Alibaba Cloud アカウントを使用して RAM コンソールにログインします。

      2. 左側のナビゲーションウィンドウで、[ID 管理] > [ロール] を選択し、対象の RAM ロールの名前をクリックします。

      3. [信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。詳細については、「RAM ロールの信頼ポリシーを変更する」をご参照ください。

      4. 信頼ポリシーの Statement リストに次の内容を追加します。

        {
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "oidc:aud": "sts.aliyuncs.com",
                    "oidc:iss": "<oidc_issuer_url>",
                    "oidc:sub": "system:serviceaccount:kube-system:aliyun-acr-credential-helper"
                }
            },
            "Effect": "Allow",
            "Principal": {
                "Federated": [
                    "<oidc_provider_arn>"
                ]
            }
        }
        重要

        <oidc_issuer_url><oidc_provider_arn> を、ステップ 2 で取得した [プロバイダー URL][プロバイダー ARN] に置き換えます。

    2. RAM ロールに AliyunSTSAssumeRoleAccess ポリシーを付与します。これにより、パスワードなしのコンポーネントがロールを偽装できるようになります。詳細については、「RAM ロールに権限を付与する」をご参照ください。

    3. ロールの詳細ページで、[基本情報] > [ARN] を選択して、RAM ロールの [ARN] を表示します。

      image

  4. クラスターのオーナーの RAM ロールを信頼し、イメージのプル権限を付与するイメージリポジトリのオーナー用の RAM ロールを設定します。

    1. RAM ロールを作成します。詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。

    2. ACS クラスターの RAM ロールを信頼し、リポジトリのオーナーのロールを偽装できるようにします。詳細については、「RAM ロールの信頼ポリシーを変更する」をご参照ください。次のコードは、サンプルポリシードキュメントを示しています:

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "RAM": [
                          "<acs_role_arn>"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
      重要

      <acs_role_arn> を、ステップ 3 で取得した ACS クラスターの RAM ロールの [ARN] に置き換えます。

    3. RAM ロールにイメージのプル権限を付与します。

      1. 次のポリシードキュメントを使用して、スクリプト編集モードでカスタムポリシーを作成します。ポリシーの [名前]AliyunACRBasicAccess に設定することをお勧めします。詳細については、「カスタムポリシーの作成」をご参照ください。

        {
            "Version": "1",
            "Statement": [
                {
                    "Action": [
                        "cr:GetAuthorizationToken",
                        "cr:ListInstanceEndpoint",
                        "cr:PullRepository"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }
      2. RAM ロールに AliyunACRBasicAccess 権限を付与します。詳細については、「RAM ロールに権限を付与する」をご参照ください。

    4. [オプション] RAM ロールの [最大セッション期間] を設定します。値の範囲は 3600 ~ 43200 秒です。[最大セッション期間] を設定する場合は、ステップ 5 で AcrInstanceInfo を設定する際に expireDuration パラメーターも設定する必要があります。

    5. ロールの詳細ページで、[基本情報] > [ARN] を選択して、RAM ロールの [ARN] を表示します。

      image

  5. パスワードなしのコンポーネントの構成で、[RRSA を有効にする] を選択し[AcrInstanceInfo] を設定します。

    次の表の説明に従って、[AcrInstanceInfo] セクションのパラメーターを変更します。

    キー

    説明

    Enable RRSA

    このチェックボックスを選択して RRSA を有効にします。RRSA 関連の構成を完了する必要があります。

    選択済み

    rrsaRoleARN

    ステップ 3 で取得した ACS クラスターの RAM ロールの [ARN]

    <acs_role_arn>

    rrsaOIDCProviderRoleARN

    ステップ 2 で取得した ACS クラスターの RRSA OIDC プロバイダーの [プロバイダー ARN]

    oidc_provider_arn

    assumeRoleARN

    ステップ 4 で取得したイメージリポジトリのオーナーの RAM ロールの [ARN]

    <acr_role_arn>

    expireDuration

    パスワードなしのコンポーネントによって生成される一時的な認証情報の有効期間。

    重要

    expireDuration の値は、ステップ 4 で設定したイメージリポジトリのオーナーの RAM ロールの [最大セッション期間] 以下である必要があります。

    デフォルト値は 3600 です。値は [3600, 43200] の範囲内である必要があります。単位: 秒。

リファレンス