

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# マネージド署名
<a name="managed-signing"></a>

Amazon ECR マネージド署名は、イメージが Amazon ECR にプッシュされたときに [AWS Signer](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html) を使用して暗号化署名を生成することで、コンテナイメージを自動的に署名します。これにより、クライアント側のツールをインストールして設定する必要がなくなり、レジストリ設定として署名を一元管理できます。

## 前提条件
<a name="managed-signing-prerequisites"></a>

マネージド署名を設定するには、1 つ以上の Signer 署名プロファイルを参照する Amazon ECR を使用して署名設定を作成し、オプションで、イメージに署名するリポジトリを制限するリポジトリフィルターを作成します。設定すると、Amazon ECR マネージド署名は、イメージをプッシュするエンティティの ID を使用してプッシュされるときに、イメージに自動的に署名します。

マネージド署名を設定する前に、以下が必要です。
+ **署名者署名プロファイル** — 少なくとも 1 つの署名者[署名プロファイル](https://docs.aws.amazon.com/signer/latest/developerguide/signing-profiles.html)を作成します。署名プロファイルは、Amazon ECR で署名オペレーションを実行するために使用できる一意の AWS Signer リソースです。署名プロファイルを使用すると、コンテナイメージや AWS Lambda デプロイバンドルなどのコードアーティファクトに署名して検証できます。各署名プロファイルは、署名する署名プラットフォーム、プラットフォーム ID、およびその他のプラットフォーム固有の情報を指定します。たとえば、署名プロファイル ARN は次のようになります: `arn:partition:signer:region:account-id:/signing-profiles/profile-name`。
+ **IAM アクセス許可** — イメージをプッシュする IAM プリンシパルには、関連する Signer 署名プロファイルおよび関連する ECR リポジトリにアクセスするために必要な IAM アクセス許可が必要です。IAM プリンシパルのアイデンティティベースのポリシーを変更して、ECR リポジトリオペレーションと署名者署名オペレーションの両方のアクセス許可を含める必要があります。次のポリシー例は、必要なアクセス許可を示しています。

```
{
   "Version": "2012-10-17",		 	 	 
   "Statement": [
   {
       "Sid":"UploadSignaturePermissions",
       "Effect":"Allow",
       "Action":[
           "ecr:CompleteLayerUpload",
           "ecr:UploadLayerPart",
           "ecr:InitiateLayerUpload",
           "ecr:BatchCheckLayerAvailability",
           "ecr:PutImage"
       ],
       "Resource":"arn:aws:ecr:region:account-id:repository/repository-name"
   },
   {
       "Sid": "SignPermissions",
       "Effect": "Allow",
       "Action": [
           "signer:SignPayload"
       ],
       "Resource": "arn:aws:signer:region:account-id:/signing-profiles/signing-profile-name"
   }
   ]
}
```

Amazon ECR マネージド署名を使用すると、複数の署名ルール (レジストリあたり最大 10 個) を作成して、より強力なセキュリティ境界を作成できます。たとえば、複数のビルドパイプラインを実行し、各パイプラインが署名できるリポジトリを制限できます。各ルール内で、署名プロファイルを設定し、リポジトリ名フィルターを指定します。新しいイメージがプッシュされると、Amazon ECR はイメージに署名できる署名ルールと署名プロファイルに一致します。複数の一致がある場合、Amazon ECR は複数の署名を生成します。

**注記**  
署名を手動で検証しても、Notation CLI をインストールする必要があります。

**注記**  
Amazon ECR マネージド署名は、 AWS Signer を使用したコンテナイメージ署名が利用可能なすべての AWS リージョンで使用できます。

## 開始方法
<a name="managed-signing-getting-started"></a>

マネージド署名を設定するには、次の手順に従います。署名者署名プロファイルへの参照を Amazon ECR に提供し、オプションで、イメージに署名するリポジトリを制限するフィルターを指定します。

------
#### [ AWS マネジメントコンソール ]

を使用してマネージド署名を設定するには、次の手順に従います AWS マネジメントコンソール。

1. [ Amazon ECR コンソール](https://console.aws.amazon.com/ecr/private-registry/repositories)を開きます。左側のナビゲーションペインで、**プライベートレジストリ**、**機能と設定**、**マネージド署名**を選択します。

1. **ルールの署名**ページで、**ルールの作成**を選択します。

1. **署名プロファイルページの****「署名者プロファイルの選択 AWS **」で、**「新しい AWS 署名者プロファイルの作成**」を選択し、**プロファイル名**を入力し、オプションで**署名の有効期間**を変更します。**[次へ]** を選択します。

1. **「フィルター**」ページの**「リポジトリの選択**」の下に、**リポジトリ名フィルター**を入力します。**[次へ]** を選択します。

1. **確認と作成**ページで、入力した**AWS 署名者プロファイル**と**リポジトリ名フィルター**を確認します。すべて正しい場合は、**保存** を選択します。

------
#### [ AWS CLI ]

マネージド署名を設定するには、次の AWS CLI コマンドを使用します。
+ **署名ルールを作成する**

  署名プロファイル ARN を使用して署名設定を作成します。次の内容を含む JSON ファイルを作成します。

  ```
  {
      "rules": [ 
          { 
              "signingProfileArn": "arn:aws:signer:region:account-id:/signing-profiles/profile-name",
              "repositoryFilters": [ 
                  { 
                      "filter": "test*",
                      "filterType": "WILDCARD_MATCH"
                  }
              ]
          }
      ]
  }
  ```

  次に、以下のコマンドを実行します。

  ```
  aws ecr --region region \
      put-signing-configuration \
      --signing-configuration file://signing-config.json
  ```

  署名設定を含む API レスポンスが表示されます。
+ **署名設定を表示する**

  署名設定を取得します。

  ```
  aws ecr --region region \
      get-signing-configuration
  ```

  署名設定を含む API レスポンスが表示されます。
+ **イメージ署名ステータスを確認する**

  イメージをリポジトリにプッシュします。例えば、次のようになります。

  ```
  docker pull ubuntu
  
  IMAGE_NAME="account-id.dkr.ecr.region.amazonaws.com/repository-name"
  IMAGE_TAG="${IMAGE_NAME}:test-1"
  
  docker tag ubuntu $IMAGE_TAG
  docker push $IMAGE_TAG
  ```

  プッシュしたら、イメージタグを使用して署名ステータスを確認します。

  ```
  aws ecr --region region \
      describe-image-signing-status \
      --repository-name repository-name \
      --image-id imageTag=test-1
  ```

  リポジトリ名が署名設定で定義されたリポジトリフィルターと一致する場合、API レスポンスに署名ステータスが表示されます。ステータスが成功すると、署名がリポジトリにプッシュされます。
+ **署名設定を削除する**

  署名設定を削除します。

  ```
  aws ecr --region region \
      delete-signing-configuration
  ```

  削除された署名設定を含む API レスポンスが表示されます。

------

## 考慮事項
<a name="managed-signing-considerations"></a>

マネージド署名には、次の制限と機能が適用されます。
+ **クロスリージョン署名はサポートされていません** — 署名プロファイルは Amazon ECR レジストリと同じリージョンにある必要があります。あるリージョンの署名プロファイルを使用して、別のリージョンにあるレジストリ内のイメージに署名することはできません。
+ **クロスアカウント署名がサポートされています** — 署名プロファイルは、Amazon ECR レジストリとは異なるアカウントに配置できます。これにより、組織は署名プロファイルを一元管理しながら、他のアカウントの開発者が使用できるようになります。詳細については、「 *AWS Signer デベロッパーガイド*[」の「署名者のクロスアカウント署名を設定する](https://docs.aws.amazon.com/signer/latest/developerguide/signing-profile-cross-account.html)」を参照してください。
+ **署名は署名できません** — 署名自体に署名することはできません。署名できるのはコンテナイメージのみです。