

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon ECR에서 이미지 서명
이미지 서명

Amazon ECR은와 통합되어 컨테이너 이미지에 서명할 수 있는 두 가지 방법, 즉 *관리형 서명*(자동, 권장)과 *수동 서명*(클라이언트 측)을 AWS Signer 제공합니다. 컨테이너 이미지와 서명을 모두 프라이빗 리포지토리에 저장할 수 있습니다.

## 서명 방법 선택


Amazon ECR은 컨테이너 이미지에 서명하는 두 가지 방법을 지원합니다.

**관리형 서명**(권장)  
관리형 서명은 이미지가 Amazon ECR로 푸시될 때 암호화 서명을 자동으로 생성합니다. 이 방법은 설정을 간소화합니다. 관리형 서명은 대부분의 사용자에게 권장되는 접근 방식입니다. 자세한 내용은 [관리형 서명](managed-signing.md) 단원을 참조하십시오.

**수동 서명**  
수동 서명은 Notation CLI 및 AWS Signer 플러그인을 사용하여 이미지를 Amazon ECR로 푸시하기 전에 이미지에 서명합니다. 이 방법은 서명 프로세스에 대한 더 많은 제어를 제공하며 푸시 워크플로 외부에서 이미지에 서명해야 하거나 서명 작업에 대한 세분화된 제어가 필요한 경우에 유용합니다. 자세한 내용은 [수동 서명](image-signing-manual.md) 단원을 참조하십시오.

## 고려 사항


Amazon ECR 이미지 서명을 사용할 때는 다음 사항을 고려해야 합니다.
+ 리포지토리에 저장된 서명은 리포지토리당 최대 이미지 수에 대한 서비스 할당량에 포함됩니다. 각 서명은 리포지토리 할당량당 이미지에 대해 1개의 아티팩트로 계산됩니다. 자세한 내용은 [Amazon ECR 서비스 할당량](service-quotas.md) 단원을 참조하십시오.
+ 리포지토리에 참조 아티팩트가 있는 경우 Amazon ECR 수명 주기 정책에 따라 주체 이미지 삭제 후 24시간 이내에 해당 아티팩트가 자동으로 정리됩니다.

# 관리형 서명
관리형 서명

Amazon ECR 관리형 서명은 이미지가 Amazon ECR로 푸시될 때 [AWS Signer](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html)를 사용하여 암호화 서명을 생성하여 컨테이너 이미지에 자동으로 서명합니다. 따라서 클라이언트 측 도구를 설치하고 구성할 필요가 없으며 레지스트리 구성으로 서명을 중앙에서 관리할 수 있습니다.

## 사전 조건


관리형 서명을 구성하려면 Amazon ECR을 사용하여 하나 이상의 서명자 서명 프로필을 참조하는 서명 구성을 생성하고, 선택적으로 이미지를 서명해야 하는 리포지토리를 제한하는 리포지토리 필터를 생성합니다. 구성되면 Amazon ECR 관리형 서명은 이미지를 푸시하는 개체의 자격 증명을 사용하여 푸시될 때 자동으로 이미지에 서명합니다.

관리형 서명을 구성하려면 먼저 다음이 있어야 합니다.
+ **서명자 서명 프로필 **- 서명자 [서명 프로필을](https://docs.aws.amazon.com/signer/latest/developerguide/signing-profiles.html) 하나 이상 생성합니다. 서명 프로필은 Amazon ECR에서 서명 작업을 수행하는 데 사용할 수 있는 고유한 AWS 서명자 리소스입니다. 서명 프로필을 사용하면 컨테이너 이미지 및 AWS Lambda 배포 번들과 같은 코드 아티팩트에 서명하고 확인할 수 있습니다. 각 서명 프로필은 서명할 서명 플랫폼, 플랫폼 ID 및 기타 플랫폼별 정보를 지정합니다. 예를 들어 서명 프로필 ARN은 다음과 같습니다`arn:partition:signer:region:account-id:/signing-profiles/profile-name`.
+ **IAM 권한** - 이미지를 푸시하는 IAM 보안 주체는 관련 서명자 서명 프로필 및 관련 ECR 리포지토리에 액세스하는 데 필요한 IAM 권한이 있어야 합니다. ECR 리포지토리 작업과 서명자 서명 작업 모두에 대한 권한을 포함하도록 IAM 보안 주체의 자격 증명 기반 정책을 수정해야 합니다. 다음 예제 정책은 필요한 권한을 보여줍니다.

```
{
   "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 리전에서 사용할 수 있습니다.

## 시작하기


다음 단계에 따라 관리형 서명을 구성합니다. Amazon ECR에 서명자 서명 프로필에 대한 참조를 제공하고 선택적으로 이미지가 서명되어야 하는 리포지토리를 제한하는 필터를 제공합니다.

------
#### [ AWS Management Console ]

다음 단계에 따라를 사용하여 관리형 서명을 구성합니다 AWS Management Console.

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 응답이 표시됩니다.

------

## 고려 사항


관리형 서명에는 다음과 같은 제한 및 기능이 적용됩니다.
+ **교차 리전 서명은 지원되지 않음 -** 서명 프로필은 Amazon ECR 레지스트리와 동일한 리전에 있어야 합니다. 한 리전의 서명 프로파일을 사용하여 다른 리전에 있는 레지스트리의 이미지에 서명할 수 없습니다.
+ **교차 계정 서명 지원 -** 서명 프로필은 Amazon ECR 레지스트리와 다른 계정에 있을 수 있습니다. 이를 통해 조직은 서명 프로필을 중앙에서 관리하는 동시에 다른 계정의 개발자가 이를 사용할 수 있습니다. 자세한 내용은 *AWS Signer 개발자 안내서*의 [서명자에 대한 교차 계정 서명 설정을](https://docs.aws.amazon.com/signer/latest/developerguide/signing-profile-cross-account.html) 참조하세요.
+ **서명은 서명할 수 없음** - 서명 자체에 서명할 수 없습니다. 컨테이너 이미지만 서명할 수 있습니다.

# 서명 확인
서명 확인

컨테이너 이미지에 서명한 후 서명을 확인하여 이미지가 변조되지 않았고 신뢰할 수 있는 소스에서 왔는지 확인할 수 있습니다. Amazon ECR은 서명을 확인하는 몇 가지 방법을 지원합니다.

## Amazon EKS를 사용한 관리형 확인


Amazon EKS는 자동 서명 확인을 위한 기본 통합을 제공합니다. Amazon EKS 클러스터에서 서명 확인을 구성하면 서비스는 컨테이너 실행을 허용하기 전에 이미지 서명을 자동으로 확인합니다. 서명 확인 구성에 대한 자세한 내용은 *Amazon EKS 사용 설명서*의 [배포 중 컨테이너 이미지 서명 검증](https://docs.aws.amazon.com/eks/latest/userguide/image-verification.html)을 참조하세요.

## Amazon ECS용 Lambda 승인 컨트롤러


Amazon ECS는 서비스 배포 중에 사용자 지정 로직을 실행할 수 있는 서비스 수명 주기 후크를 제공합니다. 이러한 후크는 배포 프로세스의 특정 지점에서 AWS Lambda 함수를 트리거하여 서비스를 시작하기 전에 컨테이너 이미지 서명을 검증할 수 있습니다. 자세한 내용은 *AWS Signer 개발자 안내서*의 [Amazon ECS에 대한 컨테이너 이미지 서명 확인을 참조하세요](https://docs.aws.amazon.com/signer/latest/developerguide/ecs-verification.html).

## Notation CLI를 사용한 수동 확인


Notation CLI를 사용하여 서명을 수동으로 확인할 수 있습니다. 이 방법을 사용하려면 로컬 시스템 또는 확인 환경에 Notation CLI를 설치하고 구성해야 합니다. Notation CLI를 사용하여 이미지를 확인하는 방법에 대한 자세한 지침은 *AWS Signer 개발자 안내서*의 [로그인 후 로컬에서 이미지 확인을](https://docs.aws.amazon.com/signer/latest/developerguide/image-verification.html) 참조하세요.

## Notation 클라이언트에 대한 인증 구성


수동 서명을 사용하거나 Notation CLI를 사용하여 서명을 수동으로 확인하는 경우 Amazon ECR에 인증할 수 있도록 Notation 클라이언트를 구성해야 합니다. Notation 클라이언트를 설치한 동일한 호스트에 Docker를 설치한 경우 Notation은 Docker 클라이언트에 사용하는 것과 동일한 인증 방법을 재사용합니다. Docker `login` 및 `logout` 명령을 사용하면 Notation `sign` 및 `verify` 명령이 동일한 자격 증명을 사용할 수 있으며 Notation을 별도로 인증할 필요가 없습니다. 인증을 위한 Notation 클라이언트 구성에 대한 자세한 내용은 Notary Project 설명서의 [OCI 준수 레지스트리를 통한 인증](https://notaryproject.dev/docs/user-guides/how-to/registry-authentication/)을 참조하세요.

Docker 또는 Docker 자격 증명을 사용하는 다른 도구를 사용하지 않는 경우 Amazon ECR Docker 자격 증명 도우미를 자격 증명 스토어로 사용하는 것이 좋습니다. Amazon ECR 자격 증명 도우미를 설치하고 구성하는 방법에 대한 자세한 내용은 [Amazon ECR Docker 자격 증명 도우미](https://github.com/awslabs/amazon-ecr-credential-helper)를 참조하세요.

# 수동 서명
수동 서명

수동 서명은 Notation CLI 및 AWS Signer 플러그인을 사용하여 이미지를 Amazon ECR로 푸시하기 전에 이미지에 서명합니다. 이 방법은 서명 프로세스에 대한 더 많은 제어를 제공하며 푸시 워크플로 외부에서 이미지에 서명해야 하거나 서명 작업에 대한 세분화된 제어가 필요한 경우에 유용합니다.

Notation CLI를 사용하여 컨테이너 이미지에 서명하는 방법에 대한 자세한 지침은 *AWS Signer 개발자 안내서*의 [Signer의 컨테이너 이미지 서명](https://docs.aws.amazon.com/signer/latest/developerguide/container-workflow.html) 및 관련 주제를 AWS Signer참조하세요.

## 사전 조건


시작하기 전에 다음 사전 요구 사항이 충족되어야 합니다.
+ 최신 버전의 AWS CLI를 설치 및 구성합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI최신 버전의 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.
+ Notation CLI와 Notation용 AWS Signer 플러그인을 설치합니다. 자세한 내용은 *AWS Signer 개발자 안내서*의 [컨테이너 이미지 서명을 위한 사전 요구 사항](https://docs.aws.amazon.com/signer/latest/developerguide/image-signing-prerequisites.html)을 참조하세요.
+ Amazon ECR 프라이빗 리포지토리에 저장된 컨테이너 이미지에 서명합니다. 자세한 내용은 [Amazon ECR 프라이빗 리포지토리에 이미지 푸시](image-push.md) 단원을 참조하십시오.