삭제 정책 구성

Artifact Registry 삭제 정책은 더 이상 필요하지 않은 아티팩트 버전을 자동으로 삭제하거나 무기한 저장하려는 아티팩트를 유지하기 위한 기준을 정의합니다.

삭제 정책은 여러 버전의 아티팩트를 저장하지만 프로덕션에 출시하는 특정 버전만 유지해야 할 경우에 유용합니다. 아티팩트 삭제 기준이 포함된 삭제 정책과 아티팩트 보존 기준이 포함된 보존 정책을 정의할 수 있습니다.

아티팩트 버전이 삭제 정책 및 유지 정책 모두의 기준과 일치하면 Artifact Registry에 유지 정책이 적용됩니다.

삭제 정책으로 트리거되는 삭제 작업은 Artifact Registry 프로젝트당 삭제 요청 할당량에서 감산되며 매일 저장소당 300,000건으로 삭제가 제한됩니다.

정책 적용 일정

Artifact Registry는 주기적으로 실행되는 백그라운드 작업을 사용하여 삭제 정책과 일치하는 아티팩트를 삭제 및 보존합니다. 변경사항은 약 1일 내에 적용됩니다.

저장소당 삭제 정책의 최대 개수

최대 10개까지 삭제 정책을 저장소에 적용할 수 있습니다.

지원되는 형식

모든 저장소 형식에 대해 표준 및 원격 저장소에 대해 삭제 정책을 설정할 수 있습니다.

필요한 역할

삭제 정책을 적용하거나 제거하는 데 필요한 권한을 얻으려면 관리자에게 저장소 프로젝트에 대한 .Artifact Registry 관리자(roles/artifactregistry.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 삭제 정책을 적용하거나 제거하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

삭제 정책을 적용하거나 제거하려면 다음 권한이 필요합니다.

  • artifactregistry.repositories.update
  • 삭제 정책의 기준을 충족하는 아티팩트를 삭제하려면 다음 안내를 따르세요. artifactregistry.versions.delete

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

Artifact Registry 서비스 에이전트의 기본 역할에는 삭제 정책의 기준을 충족하는 이미지를 삭제하는 데 필요한 artifactregistry.versions.delete 권한이 포함되어 있습니다.

정책 파일 만들기

정책 파일은 삭제 및 유지 정책을 정의하는 JSON 파일입니다. JSON 파일을 만들고 편집한 후 Google Cloud CLI를 사용하여 정책을 적용하거나 Google Cloud 콘솔을 사용하여 정책 파일을 만들 수 있습니다. 삭제 정책은 아티팩트 삭제 조건을 지정합니다. 유지 정책은 아티팩트를 보존할 조건 또는 유지할 최신 버전의 수를 지정합니다. 같은 정책에서 조건과 최신 버전을 사용할 수는 없습니다.

삭제 정책 만들기

삭제 정책을 사용하면 아티팩트 삭제에 대한 최소 또는 최대 기간과 특정 아티팩트로 정책을 제한하는 추가 필터링 기준을 지정할 수 있습니다.

특정 이유로 인해 특정 아티팩트를 삭제하지 않으려면 조건부 유지 정책 또는 최신 버전 유지 정책 및 삭제 정책을 만듭니다. 아티팩트가 삭제 정책 및 유지 정책 모두의 기준과 일치하면 유지됩니다.

콘솔

새 저장소 또는 기존 저장소의 삭제 정책을 만들 수 있습니다.

기존 저장소에 삭제 정책을 추가하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 삭제 정책 섹션에서 아티팩트 삭제를 커밋하기 전에 테스트 실행을 선택하여 새 정책을 테스트합니다. 테스트 결과 확인에 대한 자세한 내용은 테스트 실행을 참조하세요.

    정책이 의도한 대로 작동하는지 확인했으면 저장소 설정을 다시 수정하고 아티팩트 삭제를 선택하여 삭제 정책을 적용하고 선택한 아티팩트를 삭제합니다.

  4. 삭제 정책 추가를 클릭하고 다음을 추가합니다.

    • 이름: 삭제 정책 이름을 지정합니다. 이름은 저장소에 적용하는 정책 그룹 내에서 고유해야 합니다.
    • 정책 유형: 조건부 삭제를 선택합니다.
    • 태그 상태: 정책에서 태그 지정된 아티팩트 또는 태그 지정이 해제된 아티팩트를 검사할지 여부를 나타냅니다. 이미지를 저장소로 내보내거나 가져올 때 아티팩트에 태그가 지정됩니다. Docker 태그에 대한 자세한 내용은 컨테이너 개념을 참조하세요.

      • 모든 태그 상태: 태그 상태를 무시하고 태그가 지정된 아티팩트와 태그가 지정되지 않은 아티팩트에 모두 적용됩니다.
      • 태그됨: 태그가 지정된 아티팩트에만 적용됩니다.
      • 태그되지 않음: 태그가 지정되지 않은 아티팩트에만 적용됩니다.

      태그를 지원하지 않는 형식은 untagged로 처리됩니다. 저장소에 변경할 수 없는 태그가 사용 설정된 경우 태그가 지정된 아티팩트를 삭제할 수 없습니다.

      삭제 정책에 적용되는 태그 상태에 대한 자세한 내용은 TagState 참조를 확인하세요.

  5. 다음은 삭제 정책을 정의하는 선택적 방법입니다.

    • 태그 프리픽스: 쉼표로 구분된 태그 프리픽스 목록입니다. 예를 들어 teststaging 프리픽스는 testenvstaging-1.5 태그가 있는 이미지와 일치합니다. 태그 프리픽스를 사용하려면 tagStateTAGGED로 설정해야 합니다.
    • 버전 프리픽스: 쉼표로 구분된 아티팩트 버전 프리픽스 목록입니다. 예를 들어 v1, v2v1.5, v2.0alpha, v10.2 버전과 일치합니다.
    • 패키지 프리픽스: 아티팩트 이름 프리픽스 목록입니다. 프리픽스 사이에 Enter 또는 ,를 눌러 여러 프리픽스를 입력할 수 있습니다. 예를 들어 red, blue는 두 개의 프리픽스 redblue를 만들고 아티팩트 이름 red-team, redis, bluebird와 일치합니다.
    • 다음보다 오래됨: 저장소에 아티팩트 버전을 만든 이후 최소 기간을 의미합니다. 예를 들어 30d는 30일입니다. 각각 s, m, h, d를 추가하여 초, 분, 시간, 일로 기간을 지정할 수 있습니다.
    • 다음보다 최신: 저장소에 아티팩트 버전을 만든 이후 최대 기간을 의미합니다. 예를 들어 30d는 30일입니다.
  6. 삭제 정책 추가를 클릭하여 삭제 정책을 더 추가할 수 있습니다.

  7. 업데이트를 클릭합니다.

    삭제 정책이 저장소에 적용됩니다. 저장소 세부정보 섹션에서 더보기를 클릭하여 삭제 정책을 볼 수 있습니다.

JSON

{
  "name": "DELETE_POLICY_NAME",
  "action": {"type": "Delete"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

삭제 정책에는 이름, 작업 및 하나 이상의 조건이 포함되어야 합니다.

name
삭제 정책 스니펫에서 DELETE_POLICY_NAME은 정책의 이름입니다. 이름은 저장소에 적용하는 정책 그룹 내에서 고유해야 합니다.
action
삭제 정책의 경우 값이 {"type": "Delete"}입니다.
condition
다음 조건 중 하나 이상을 지정합니다.
  • tagState: TAG_STATUS는 정책에서 태그 지정된 아티팩트 또는 태그 지정이 해제된 아티팩트를 검사할지 여부를 나타냅니다. 이미지를 저장소로 내보내거나 가져올 때 아티팩트에 태그가 지정됩니다. 지원되는 값은 다음과 같습니다.

    • tagged: 태그가 지정된 아티팩트에만 적용됩니다.
    • untagged: 태그가 지정되지 않은 아티팩트에만 적용됩니다.
    • any: 태그 상태를 무시하고 태그가 지정된 아티팩트와 태그가 지정되지 않은 아티팩트에 모두 적용됩니다.

    태그를 지원하지 않는 형식은 untagged로 처리됩니다. 저장소에 변경할 수 없는 태그가 사용 설정된 경우 태그가 지정된 아티팩트를 삭제할 수 없습니다.

    Docker 태그에 대한 자세한 내용은 컨테이너 개념을 참조하세요.

  • tagPrefixes: TAG_PREFIXES는 쉼표로 구분된 태그 프리픽스 목록입니다. 예를 들어 "test", "staging""testenv""staging-1.5" 태그가 있는 이미지와 일치합니다. 태그 프리픽스를 사용하려면 tagStateTAGGED로 설정해야 합니다.

  • versionNamePrefixes: VERSION_PREFIXES는 아티팩트 버전 프리픽스의 쉼표로 구분된 목록입니다. 예를 들어 "v1", "v2"는 버전 "v1.5", "v2.0alpha""v10.2"와 일치합니다.

  • packageNamePrefixes: PACKAGE_PREFIXES는 쉼표로 구분된 아티팩트 이름 프리픽스 목록입니다. 예를 들어 "red", "blue"는 아티팩트 이름 "red-team", "redis", "bluebird"와 일치합니다.

  • olderThan: OLDER_THAN_DURATION은 저장소에 아티팩트 버전을 만든 이후 최소 기간입니다. 예를 들어 30d는 30일입니다. 각각 s, m, h, d를 추가하여 초, 분, 시간, 일로 기간을 지정할 수 있습니다.

  • newerThan: NEWER_THAN_DURATION은 저장소에 아티팩트 버전을 만든 이후 최대 기간입니다. 예를 들어 30d는 30일입니다.

조건부 유지 정책 만들기

조건부 유지 정책은 아티팩트 보존 기준을 지정합니다. 유지 정책은 삭제 정책과 함께 작동하여 삭제 정책의 사양에 따라 삭제되지만 유지하려는 아티팩트를 유지합니다. 아티팩트가 삭제 정책과 유지 정책 모두의 기준과 일치하면 유지됩니다.

콘솔

새 저장소 또는 기존 저장소의 유지 정책을 만들 수 있습니다.

기존 저장소에 유지 정책을 추가하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 삭제 정책 섹션에서 아티팩트 삭제를 커밋하기 전에 테스트 실행을 선택하여 새 정책을 테스트합니다. 유지 정책 결과를 보려면 삭제 정책을 하나 이상 설정해야 합니다. 테스트 결과 확인에 대한 자세한 내용은 테스트 실행을 참조하세요.

    정책이 의도한 대로 작동하는지 확인했으면 저장소 설정을 다시 수정하고 아티팩트 삭제를 선택하여 삭제 정책을 적용하고 선택한 아티팩트를 삭제합니다.

  4. 삭제 정책 추가를 클릭하고 다음을 추가합니다.

    • 이름: 삭제 정책 이름을 지정합니다. 이름은 저장소에 적용하는 정책 그룹 내에서 고유해야 합니다.
    • 정책 유형: 조건부 유지를 선택합니다.
    • 태그 상태: 정책에서 태그 지정된 아티팩트 또는 태그 지정이 해제된 아티팩트를 검사할지 여부를 나타냅니다. 이미지를 저장소로 내보내거나 가져올 때 아티팩트에 태그가 지정됩니다. Docker 태그에 대한 자세한 내용은 컨테이너 개념을 참조하세요.

      • 모든 태그 상태: 태그 상태를 무시하고 태그가 지정된 아티팩트와 태그가 지정되지 않은 아티팩트에 모두 적용됩니다.
      • 태그됨: 태그가 지정된 아티팩트에만 적용됩니다.
      • 태그되지 않음: 태그가 지정되지 않은 아티팩트에만 적용됩니다.

      태그를 지원하지 않는 형식은 untagged로 처리됩니다. 저장소에 변경할 수 없는 태그가 사용 설정된 경우 태그가 지정된 아티팩트를 삭제할 수 없습니다. 삭제 정책에 적용되는 태그 상태에 대한 자세한 내용은 TagState 참조를 확인하세요.

  5. 다음은 유지 정책을 정의하는 선택적 방법입니다.

    • 태그 프리픽스: 쉼표로 구분된 태그 프리픽스 목록입니다. 예를 들어 teststaging 프리픽스는 testenvstaging-1.5 태그가 있는 이미지와 일치합니다. 태그 프리픽스를 사용하려면 tagStateTAGGED로 설정해야 합니다.
    • 버전 프리픽스: 쉼표로 구분된 아티팩트 버전 프리픽스 목록입니다. 예를 들어 v1, v2v1.5, v2.0alpha, v10.2 버전과 일치합니다.
    • 패키지 프리픽스: 쉼표로 구분된 아티팩트 이름 프리픽스 목록입니다. 예를 들어 red, blue는 아티팩트 이름 red-team, redis, bluebird와 일치합니다.
    • 다음보다 오래됨: 저장소에 아티팩트 버전을 만든 이후 최소 기간을 의미합니다. 예를 들어 30d는 30일입니다. 각각 s, m, h, d를 추가하여 초, 분, 시간, 일로 기간을 지정할 수 있습니다.
    • 다음보다 최신: 저장소에 아티팩트 버전을 만든 이후 최대 기간을 의미합니다. 예를 들어 30d는 30일입니다.
  6. 삭제 정책 추가를 클릭하여 삭제 정책을 더 추가할 수 있습니다.

  7. 업데이트를 클릭합니다.

    삭제 정책이 저장소에 적용됩니다.

JSON

형식은 삭제 정책과 비슷합니다. 유지 정책의 경우 action 값이 {"type": "Keep"}입니다.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

다음을 바꿉니다.

  • KEEP_POLICY_NAME을 삭제 정책 이름으로 바꿉니다. 이름은 저장소에 적용하는 정책 그룹 내에서 고유해야 합니다.
  • 태그 상태가 있는 TAG_STATUS는 정책에서 태그가 지정된 아티팩트 또는 태그 지정이 해제된 아티팩트를 검사할지 여부를 나타냅니다. 이미지를 저장소로 내보내거나 가져올 때 아티팩트에 태그가 지정됩니다. Docker 태그에 대한 자세한 내용은 컨테이너 개념을 참조하세요.

    옵션은 다음과 같습니다.

    • tagged: 태그가 지정된 아티팩트에만 적용됩니다.
    • untagged: 태그가 지정되지 않은 아티팩트에만 적용됩니다.
    • any: 모든 버전에 적용됩니다.

    태그를 지원하지 않는 형식은 untagged로 처리됩니다. 저장소에 변경할 수 없는 태그가 사용 설정된 경우 태그가 지정된 아티팩트를 삭제할 수 없습니다. 삭제 정책에 적용되는 태그 상태에 대한 자세한 내용은 TagState 참조를 확인하세요.

  • TAG_PREFIXES: 쉼표로 구분된 태그 프리픽스 목록입니다. 예를 들어 teststaging 프리픽스는 testenvstaging-1.5 태그가 있는 이미지와 일치합니다. 태그 프리픽스를 사용하려면 tagStateTAGGED로 설정해야 합니다.

  • VERSION_PREFIXES: 아티팩트 버전 프리픽스의 쉼표로 구분된 목록입니다. 예를 들어 v1, v2는 버전 v1.5, v2.0alphav10.2와 일치합니다.

  • PACKAGE_PREFIXES: 쉼표로 구분된 아티팩트 이름 프리픽스 목록입니다. 예를 들어 red, blue는 아티팩트 이름 red-team, redis, bluebird와 일치합니다.

  • OLDER_THAN_DURATION: 저장소에 아티팩트 버전을 만든 이후 최소 기간입니다. 예를 들어 30d는 30일입니다. 각각 s, m, h, d를 추가하여 초, 분, 시간, 일로 기간을 지정할 수 있습니다.
  • NEWER_THAN_DURATION: 저장소에 아티팩트 버전을 만든 이후 최대 기간입니다. 예를 들어 30d는 30일입니다.

최신 버전의 유지 정책 만들기

유지 정책을 만들어 특정 수의 버전을 유지할 수 있습니다. 동일한 유지 정책에서 조건부 유지최신 버전 유지 기준을 사용할 수 없습니다.

유지 정책은 삭제 정책과 함께 작동하여 삭제 정책의 사양에 따라 삭제되지만 유지하려는 아티팩트를 유지합니다. 아티팩트가 삭제 정책과 유지 정책 모두의 기준과 일치하면 유지됩니다.

콘솔

새 저장소 또는 기존 저장소에 대해 최신 버전 유지 정책을 만들 수 있습니다.

기존 저장소에 최신 버전 유지 정책을 추가하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 삭제 정책 섹션에서 아티팩트 삭제를 커밋하기 전에 테스트 실행을 선택하여 새 정책을 테스트합니다. 유지 정책 결과를 보려면 삭제 정책을 하나 이상 설정해야 합니다. 테스트 결과 확인에 대한 자세한 내용은 테스트 실행을 참조하세요.

    정책이 의도한 대로 작동하는지 확인했으면 저장소 설정을 다시 수정하고 아티팩트 삭제를 선택하여 삭제 정책을 적용하고 선택한 아티팩트를 삭제합니다.

  4. 삭제 정책 추가를 클릭하고 다음을 추가합니다.

    • 이름: 삭제 정책 이름을 지정합니다. 이름은 저장소에 적용하는 정책 그룹 내에서 고유해야 합니다.
    • 정책 유형: 최신 버전 유지를 선택합니다.
  5. 유지 개수 필드에 저장소에 보관할 아티팩트 버전의 수를 입력합니다.

  6. 선택사항: 패키지 프리픽스를 선택하여 유지 정책을 적용할 패키지 프리픽스를 지정합니다. 예를 들어 red, blue는 아티팩트 이름 red-team, redis, bluebird와 일치합니다.

  7. 삭제 정책 추가를 클릭하여 삭제 정책을 더 추가할 수 있습니다.

  8. 업데이트를 클릭합니다.

    삭제 정책이 저장소에 적용됩니다. 저장소 세부정보 섹션에서 더보기를 클릭하여 삭제 정책을 볼 수 있습니다.

JSON

형식은 삭제 정책과 비슷합니다. 유지 정책의 경우 action 값이 {"type": "Keep"}입니다.

특정 버전을 보존하기 위한 유지 정책에는 condition 섹션 대신 mostRecentVersions 섹션이 있습니다.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "mostRecentVersions": {
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "keepCount": MINIMUM_NUMBER
  }
}

다음을 바꿉니다.

  • KEEP_POLICY_NAME: 유지 정책의 이름으로 바꿉니다. 이름은 저장소에 적용하는 정책 그룹 내에서 고유해야 합니다.
  • PACKAGE_PREFIXES: 유지 정책을 적용할 선택적 패키지 프리픽스로 바꿉니다. 예를 들어 red, blue는 아티팩트 이름 red-team, redis, bluebird와 일치합니다.
  • MINIMUM_NUMBER를 저장소에 보관할 아티팩트 버전 수로 바꿉니다.

저장소의 모든 패키지에 유지 정책을 적용하려면 packageNamePrefixes 조건을 생략하세요. 저장소에 있는 각 패키지의 지정된 최신 버전 수가 유지됩니다.

정책 파일 예시

다음 정책 파일 예시에는 1개의 삭제 정책과 2개의 유지 정책이 있습니다.

  • delete-prerelease 정책은 아티팩트가 alpha 또는 v0 문자열로 시작하는 경우 업로드 후 30일이 지나면 아티팩트 버전을 삭제합니다.
  • keep-tagged-release 정책은 파일 이름이 webapp 또는 mobile로 시작하는 release 프리픽스로 태그 지정된 아티팩트를 보존합니다.
  • keep-minimum-versions 정책은 파일 이름이 webapp, mobile, sandbox로 시작하는 아티팩트의 최신 5개 버전을 보존합니다.
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

테스트 실행으로 정책 테스트

삭제 정책을 테스트하려면 콘솔에서 테스트 실행하도록 설정하거나 --dry-run 플래그와 함께 gcloud artifacts set-cleanup-policies 명령어를 실행하면 됩니다.

삭제 정책의 영향을 분석하려면 Artifact Registry 데이터 액세스 감사 로그를 보면 됩니다. 삭제 정책에 대한 데이터 액세스 감사 로그를 받으려면 Artifact Registry 서비스에 대한 데이터 액세스 감사 로그의 데이터 쓰기 유형을 명시적으로 사용 설정해야 합니다. 데이터 액세스 감사 로그를 사용 설정하려면 감사 로그 사용 설정을 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 삭제 정책 섹션에서 테스트 실행을 선택합니다.

  4. 삭제 정책 추가를 클릭하고 조건부 삭제, 조건부 유지 또는 최신 버전 유지 정책의 옵션을 구성합니다.

  5. 업데이트를 클릭합니다.

삭제 정책으로 인해 BatchDeleteVersions 작업이 발생하면 validateOnly 매개변수가 "true"로 평가됩니다.

삭제 정책의 테스트 실행에 대해 감사 로그를 쿼리하려면 다음 명령어를 실행합니다.

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

다음과 유사한 결과가 출력됩니다.

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

gcloud CLI

삭제 정책으로 테스트 실행을 수행하려면 다음 명령어를 실행합니다.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --dry-run

다음을 바꿉니다.

  • REPOSITORY를 저장소 이름으로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다.

삭제 정책으로 인해 BatchDeleteVersions 작업이 발생하면 validateOnly 매개변수가 "true"로 평가됩니다.

삭제 정책의 테스트 실행에 대해 감사 로그를 쿼리하려면 다음 명령어를 실행합니다.

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

다음과 유사한 결과가 출력됩니다.

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

저장소에 정책 적용

로컬 JSON 파일에 정의된 삭제 정책을 사용하려면 gcloud CLI를 사용하여 Artifact Registry에서 아티팩트 버전 자동 삭제를 처리할 저장소에 정책을 적용합니다.

콘솔에서 테스트 실행으로 설정된 삭제 정책을 적용하려면 정책을 아티팩트 삭제로 설정합니다.

표준 저장소에만 삭제 정책을 적용할 수 있습니다. 다음 대상에는 삭제 정책을 적용할 수 없습니다.

콘솔

삭제 정책을 적용하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 삭제 정책 섹션에서 아티팩트 삭제를 선택합니다.

    Artifact Registry는 주기적으로 실행되는 백그라운드 작업을 사용하여 정책과 일치하는 아티팩트를 삭제 및 보존합니다. 변경사항은 약 1일 내에 적용됩니다.

gcloud

삭제 정책을 적용하려면 삭제 정책 파일이 있는 디렉터리에서 다음 명령어를 실행합니다.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

다음을 바꿉니다.

  • REPOSITORY를 저장소 이름으로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다.
  • --no-dry-run은 저장소의 테스트 실행 기능을 사용 중지합니다.
  • POLICY_FILE은 삭제 정책이 포함된 파일의 이름입니다.

예를 들어 다음 명령어는 my-project 프로젝트의 us-east1 리전에 있는 my-repo 저장소에 policy.json의 정책을 적용합니다.

gcloud artifacts repositories set-cleanup-policies my-repo \
    --project=my-project \
    --location=us-east1 \
    --policy=policy.json

Artifact Registry는 주기적으로 실행되는 백그라운드 작업을 사용하여 정책과 일치하는 아티팩트를 삭제 및 보존합니다. 변경사항은 약 1일 내에 적용됩니다.

정책 업데이트

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 삭제 정책 섹션에서 수정할 정책의 이름을 클릭합니다.

  4. 삭제 정책을 수정하고 업데이트를 클릭합니다.

    삭제 정책이 저장소에 적용됩니다.

gcloud CLI

기존 정책을 업데이트하려면 정책 파일에서 설정을 수정한 후 다음 명령어를 실행하여 다시 정책을 적용합니다.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

다음을 바꿉니다.

  • REPOSITORY를 저장소 이름으로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다.
  • --no-dry-run은 저장소의 테스트 실행 기능을 사용 중지합니다.
  • POLICY_FILE은 삭제 정책이 포함된 파일의 이름입니다.

저장소 삭제 정책 나열

저장소와 관련된 삭제 정책을 볼 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 보려는 저장소를 선택합니다.

  3. 저장소 세부정보 섹션에서 더보기를 클릭합니다.

    삭제 정책 이름이 표시됩니다.

  4. 저장소 삭제 정책의 세부정보를 보거나 수정하려면 저장소 수정을 클릭합니다.

    기존 삭제 정책 세부정보는 삭제 정책 섹션에 나열됩니다.

gcloud CLI

다음 명령어를 실행합니다.

gcloud artifacts repositories list-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION

다음을 바꿉니다.

  • REPOSITORY를 저장소 이름으로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다.

저장소에서 정책 삭제

Artifact Registry가 더 이상 아티팩트 버전을 자동으로 삭제할 필요가 없으면 저장소에서 삭제 정책을 삭제합니다.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 삭제 정책 섹션에서 삭제할 정책 이름 위로 마우스를 가져갑니다.

  4. 삭제 아이콘을 클릭합니다.

  5. 업데이트를 클릭합니다.

    삭제 정책이 삭제됩니다.

gcloud CLI

다음 명령어를 실행합니다.

gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
    --policynames=POLICY_NAMES \
    --project=PROJECT_ID \
    --location=LOCATION

다음을 바꿉니다.

  • REPOSITORY는 저장소 이름입니다.
  • PROJECT_ID는 Google Cloud 프로젝트의 ID입니다.
  • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
  • POLICY_NAMES는 삭제할 정책의 쉼표로 구분된 정책 이름 목록입니다.

예를 들어 다음 명령어는 my-project 프로젝트의 us-east1 리전에 있는 my-repo 저장소에서 delete-test라는 정책을 삭제합니다.

gcloud artifacts repositories delete-cleanup-policies my-repo \
    --policynames=delete-test \
    --project=my-project \
    --location=us-east1

삭제 정책의 감사 로그 항목

Cloud Logging에서 삭제 정책 로그 항목을 보려면 DATA_WRITE 로깅을 사용 설정해야 합니다.

저장소에서 삭제 정책을 설정하면 작업이 저장소에 대한 업데이트로 로깅됩니다(UpdateRepository 작업).

Artifact Registry에서 아티팩트 버전이 삭제되면 Cloud Logging 데이터 액세스 로그에 이벤트가 기록됩니다. 로그 항목에는 Artifact Registry 서비스 계정이 삭제를 수행한 것으로 표시됩니다. Artifact Registry 서비스 계정 ID는 service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com 형식입니다.

기타 도구

컨테이너 이미지의 경우 이미지 수명 주기 관리를 위해 다음 도구를 사용할 수도 있습니다.

  • gcrane: 저장소 간 이미지 복사를 위해 사용할 수 있는 컨테이너 레지스트리 도구입니다.
  • gcr-cleaner: 지정된 기준에 따라 컨테이너 이미지를 삭제하는 도구입니다.

gcranegcr-cleaner 도구는 공식 Google 제품이 아닙니다.