Container > NHN Container Registry(NCR) > API 가이드

컨테이너 레지스트리를 구성하기 위한 API를 기술합니다.

API 도메인은 다음과 같습니다.

리전 도메인
한국(판교) 리전 https://kr1-ncr.api.gov-nhncloudservice.com

API 요청 공통 정보

API를 사용하려면 다음과 같은 정보가 필요합니다.

  • User Access Key와 Secret Access Key: NHN Cloud 콘솔의 계정 > API 보안 설정 페이지에서 생성합니다.

  • 토큰: API 호출 및 인증을 참고하여 생성합니다.

  • 서비스 Appkey: 콘솔 상단 URL & Appkey 메뉴에서 확인이 가능합니다.

User Access Key와 Secret Access Key를 사용하는 경우 API 헤더는 다음과 같습니다.

이름 종류 형식 필수 설명
X-TC-AUTHENTICATION-ID Header String O User Access Key
X-TC-AUTHENTICATION-SECRET Header String X (생성하였을 경우 필수) Secret Access Key

토큰을 사용하는 경우 API 헤더는 다음과 같습니다.

이름 종류 형식 필수 설명
x-nhn-authorization Header String O 토큰

API 응답 공통 정보

모든 API 요청에 200 OK로 응답합니다. 자세한 응답 결과는 응답 본문 헤더를 참고합니다.

이름 종류 형식 설명
header Body Object
header.isSuccessful Body Boolean true: 정상
false: 오류
header.resultCode Body Integer 200: 정상
10000 이상: 오류
header.resultMessage Body String "SUCCESS": 정상
그 외: 오류 원인 메시지

[주의] API 응답에 가이드에 명시되지 않은 필드가 나타날 수 있습니다. 이런 필드는 NHN Cloud 내부 용도로 사용되며 사전 공지 없이 변경될 수 있으므로 사용하지 않습니다.
[주의] 리소스를 생성할 때 입력하지 않은 옵션 필드는 조회할 때 응답 본문에 나타나지 않을 수 있습니다.

컨테이너 레지스트리

컨테이너 레지스트리 목록 보기

컨테이너 레지스트리 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
registries Body Array O 컨테이너 레지스트리 목록
registries.project_id Body Integer O 컨테이너 레지스트리 ID
registries.name Body String O 컨테이너 레지스트리 이름
registries.creation_time Body String O 생성 시간
registries.update_time Body String O 변경 시간
registries.repo_count Body Integer O 컨테이너 레지스트리에 있는 이미지 개수
registries.metadata Body Object map[string]string O 컨테이너 레지스트리 설정
registries.metadata.auto_scan Body String O 이미지를 push할 때 자동으로 스캔 여부: true/false
registries.metadata.severity Body String X 취약점 심각도: critical/medium/high/low/none
registries.metadata.prevent_vul Body String O 이미지의 취약점 심각도에 따라 pull 방지 설정 여부: true/false
registries.metadata.reuse_sys_cve_allowlist Body String O 공통 CVE 허용 목록 사용 여부: true/false
registries.cve_allowlist Body Object O 취약점 허용 목록
registries.cve_allowlist.id Body Integer O 취약점 허용 목록 ID
registries.cve_allowlist.items Body Object List O CVE 목록
registries.cve_allowlist.items.cve_id Body String X CVE ID
registries.registry_id Body Integer O 0이 아니면 이미지 캐시 유형, 0이면 일반 유형
registries.usage Body Integer O 컨테이너 레지스트리 사용량
registries.uri Body String O 컨테이너 레지스트리 접근 URI
registries.private_uri Body String O 컨테이너 레지스트리 접근 Private URI

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "registries": [
        {
            "project_id": 2,
            "name": "hy",
            "creation_time": "2023-03-14T02:41:10.525Z",
            "update_time": "2023-03-14T02:41:10.525Z",
            "repo_count": 2,
            "metadata": {
                "auto_scan": "true",
                "prevent_vul": "true",
                "public": "false",
                "retention_id": "1",
                "severity": "critical"
            },
            "cve_allowlist": {
                "id": 2,
                "project_id": 2,
                "items": []
            },
            "registry_id": 0,
            "usage": 57464288,
            "uri": "63ae9964-alp-kr1-registry.container.cloud.toastoven.net/hy",
            "private_uri": "private-63ae9964-alp-kr1-registry.container.cloud.toastoven.net/hy"
        }
    ]
}

컨테이너 레지스트리 보기

컨테이너 레지스트리 정보를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false

응답

이름 종류 형식 필수 설명
registry Body Object O 컨테이너 레지스트리 정보
registry.project_id Body Integer O 컨테이너 레지스트리 ID
registry.name Body String O 컨테이너 레지스트리 이름
registry.creation_time Body String O 생성 시간
registry.update_time Body String O 변경 시간
registry.repo_count Body Integer O 컨테이너 레지스트리에 있는 이미지 개수
registry.metadata Body Object map[string]string O 컨테이너 레지스트리 설정
registry.metadata.auto_scan Body String O 이미지를 push할 때 자동으로 스캔 여부: true/false
registry.metadata.severity Body String X 취약점 심각도: critical/medium/high/low/none
registry.metadata.prevent_vul Body String O 이미지의 취약점 심각도에 따라 pull 방지 설정 여부: true/false
registry.metadata.reuse_sys_cve_allowlist Body String O 공통 CVE 허용 목록 사용 여부: true/false
registry.cve_allowlist Body Object O 취약점 허용 목록
registry.cve_allowlist.id Body Integer O 취약점 허용 목록 ID
registry.cve_allowlist.items Body Object List O CVE 목록
registry.cve_allowlist.items.cve_id Body String X CVE ID
registry.registry_id Body Integer O 0이 아니면 이미지 캐시 유형, 0이면 일반 유형
registry.usage Body Integer O 컨테이너 레지스트리 사용량
registry.uri Body String O 컨테이너 레지스트리 접근 URI
registry.private_uri Body String O 컨테이너 레지스트리 접근 Private URI

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "registry": {
        "project_id": 2,
        "name": "hy",
        "creation_time": "2023-03-14T02:41:10.525Z",
        "update_time": "2023-03-14T02:41:10.525Z",
        "repo_count": 2,
        "metadata": {
            "auto_scan": "true",
            "prevent_vul": "true",
            "public": "false",
            "retention_id": "1",
            "severity": "critical"
        },
        "cve_allowlist": {
            "id": 2,
            "project_id": 2,
            "items": []
        },
        "registry_id": 0,
        "usage": 57464288,
        "uri": "63ae9964-alp-kr1-registry.container.cloud.toastoven.net/hy",
        "private_uri": "private-63ae9964-alp-kr1-registry.container.cloud.toastoven.net/hy"
    }
}

컨테이너 레지스트리 생성하기

컨테이너 레지스트리를 생성합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
project_name Body String O 컨테이너 레지스트리 이름
metadata Body Object map[string]string X 컨테이너 레지스트리 설정
metadata.auto_scan Body String X 이미지를 push할 때 자동으로 스캔 여부: true/false
metadata.severity Body String X 취약점 심각도: critical/medium/high/low/none
metadata.prevent_vul Body String X 이미지의 취약점 심각도에 따라 pull 방지 설정 여부: true/false
metadata.reuse_sys_cve_allowlist Body String X 공통 CVE 허용 목록 사용 여부: true/false
registry_id Body Integer X 이미지 캐시 유형의 레지스트리 생성 시 필요한 이미지 캐시 ID

예시

{
    "project_name": "registry"
}

응답

이 API는 공통 정보만 응답합니다.

컨테이너 레지스트리 삭제하기

컨테이너 레지스트리를 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false

응답

이 API는 공통 정보만 응답합니다.

컨테이너 레지스트리 변경하기

컨테이너 레지스트리를 변경합니다.

PUT /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false
metadata Body Object map[string]string X 컨테이너 레지스트리 설정
metadata.auto_scan Body String X 이미지를 push할 때 자동으로 스캔 여부: true/false
metadata.severity Body String X 취약점 심각도: critical/medium/high/low/none
metadata.prevent_vul Body String X 이미지의 취약점 심각도에 따라 pull 방지 설정 여부: true/false
metadata.reuse_sys_cve_allowlist Body String X 공통 CVE 허용 목록 사용 여부: true/false
cve_allowlist Body Object 설정되어 있을 시 필수 취약점 허용 목록
cve_allowlist.items Body Object List 설정되어 있을 시 필수 CVE 목록
cve_allowlist.items.cve_id Body String 설정되어 있을 시 필수 CVE ID

예시

{
    "metadata": {
        "auto_scan": "true"
    },
    "cve_allowlist": {
        "items": [
            {
                "cve_id": "CVE-2011-3374"
            }
        ]
    }
}

응답

이 API는 공통 정보만 응답합니다.

이미지 보호 정책 목록 보기

이미지 보호 정책 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/immutabletagrules

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
immutable_tag_rules Body Array O 이미지 보호 정책 목록
immutable_tag_rules.id Body Integer O 이미지 보호 정책 ID
immutable_tag_rules.disabled Body Boolean O 이미지 보호 정책 활성화 여부
immutable_tag_rules.scope Body Object O 이미지에 대한 보호 정책 정보
immutable_tag_rules.scope.include Body Boolean O 이미지에 대한 보호 정책 설정 여부
immutable_tag_rules.scope.pattern Body String O 보호 대상 이미지
immutable_tag_rules.tag Body Object O 태그에 대한 보호 정책 정보
immutable_tag_rules.tag.include Body Boolean O 태그에 대한 보호 정책 설정 여부
immutable_tag_rules.tag.pattern Body String O 보호 대상 태그

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "immutable_tag_rules": [
        {
            "id": 1,
            "disabled": false,
            "scope": {
                "include": true,
                "pattern": "**"
            },
            "tag": {
                "include": true,
                "pattern": "**"
            }
        }
    ]
}

이미지 보호 정책 생성하기

이미지 보호 정책을 생성합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/immutabletagrules

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
scope Body Object X 이미지에 대한 보호 정책 정보
scope.include Body Boolean X 이미지에 대한 보호 정책 설정 여부
scope.pattern Body String X 보호 대상 이미지
전체 이미지 대상: ** 입력
tag Body Object X 태그에 대한 보호 정책 정보
tag.include Body Boolean X 태그에 대한 보호 정책 설정 여부
tag.pattern Body String X 보호 대상 태그
전체 태그 대상: ** 입력

예시

{
    "scope": {
        "include": true,
        "pattern": "test"
    }
}

응답

이 API는 공통 정보만 응답합니다.

이미지 보호 정책 삭제하기

이미지 보호 정책을 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/immutabletagrules/{rule_id}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
rule_id URL String O 이미지 보호 정책 ID

응답

이 API는 공통 정보만 응답합니다.

이미지 보호 정책 변경하기

이미지 보호 정책을 변경합니다.

PUT /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/immutabletagrules/{rule_id}

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
rule_id URL String O 이미지 보호 정책 ID
disabled Body Boolean X 이미지 보호 정책 활성화 여부
scope Body Object O 이미지에 대한 보호 정책 정보
scope.include Body Boolean O 이미지에 대한 보호 정책 설정 여부
scope.pattern Body String O 보호 대상 이미지
tag Body Object O 태그에 대한 보호 정책 정보
tag.include Body Boolean O 태그에 대한 보호 정책 설정 여부
tag.pattern Body String O 보호 대상 태그

예시

{
    "disabled": true,
    "scope": {
        "include": true,
        "pattern": "test"
    },
    "tag": {
        "include": false,
        "pattern": "**"
    }
}

응답

이 API는 공통 정보만 응답합니다.

이미지 정리 정책 목록 보기

이미지 정리 정책 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
retention_rules Body Array O 이미지 정리 정책 목록
retention_rules.id Body Integer O 이미지 정리 정책 ID
retention_rules.disabled Body Boolean O 이미지 정리 정책 활성화 여부
retention_rules.parameters Body Object map O 정리 정책 설정
retention_rules.parameters.always Body Integer X 항상 n개의 아티팩트만 보관
retention_rules.parameters.latest_pulled_n_images Body Integer X 가장 최근에 Pull한 n개의 아티팩트만 보관
retention_rules.parameters.latest_pushed_n_images Body Integer X 가장 최근에 Push한 n개의 아티팩트만 보관
retention_rules.parameters.n_days_since_last_pull Body Integer X Push한 날짜가 n일인 아티팩트만 보관
retention_rules.parameters.n_days_since_last_push Body Integer X Pull한 날짜가 n일인 아티팩트만 보관
retention_rules.tag Body Object O 태그에 대한 정리 정책 정보
retention_rules.tag.include Body Boolean O 태그에 대한 정리 정책 설정 여부
retention_rules.tag.pattern Body String O 정리 대상 태그
retention_rules.tag.untagged Body Boolean O 태깅되지 않은 아티팩트 포함 여부
retention_rules.scope Body Object O 이미지에 대한 정리 정책 정보
retention_rules.scope.include Body Boolean O 이미지에 대한 정리 정책 설정 여부
retention_rules.scope.pattern Body String O 정리 대상 이미지

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "retention_rules": [
        {
            "id": 1,
            "disabled": false,
            "parameters": {
                "always": -1
            },
            "tag": {
                "include": true,
                "pattern": "**",
                "untagged": false
            },
            "scope": {
                "include": true,
                "pattern": "**"
            }
        }
    ]
}

이미지 정리 정책 생성하기

이미지 정리 정책을 생성합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
tag Body Object X 태그에 대한 정리 정책 정보
tag.include Body Boolean X 태그에 대한 정리 정책 설정 여부
tag.pattern Body String X 정리 대상 태그
전체 태그 대상: ** 입력
tag.untagged Body Boolean X 태깅되지 않은 아티팩트 포함 여부
scope Body Object X 이미지에 대한 정리 정책 정보
scope.include Body Boolean X 이미지에 대한 정리 정책 설정 여부
scope.pattern Body String X 정리 대상 이미지
전체 이미지 대상: ** 입력
disabled Body Boolean X 이미지 정리 정책 활성화 여부
미입력 시 활성화(false) 설정
parameters Body Object map O 정리 정책 설정
parameters.always Body Integer X 항상 n개의 아티팩트만 보관
parameters.latest_pulled_n_images Body Integer X 가장 최근에 Pull한 n개의 아티팩트만 보관
parameters.latest_pushed_n_images Body Integer X 가장 최근에 Push한 n개의 아티팩트만 보관
parameters.n_days_since_last_pull Body Integer X Push한 날짜가 n일인 아티팩트만 보관
parameters.n_days_since_last_push Body Integer X Pull한 날짜가 n일인 아티팩트만 보관

예시

{
    "scope": {
        "include": true,
        "pattern": "test"
    },
    "parameters": {
        "latest_pulled_n_images": 2
    }
}

응답

이 API는 공통 정보만 응답합니다.

이미지 정리 정책 삭제하기

이미지 보호 정책을 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
id Query Integer O 이미지 정리 정책 ID

응답

이 API는 공통 정보만 응답합니다.

이미지 정리 정책 변경하기

이미지 보호 정책을 변경합니다.

PUT /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions/{rule_id}

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
rule_id URL String O 이미지 정리 정책 ID
disabled Body Boolean X 이미지 정리 정책 활성화 여부
tag Body Object O 태그에 대한 정리 정책 정보
tag.include Body Boolean O 태그에 대한 정리 정책 설정 여부
tag.pattern Body String O 정리 대상 태그
tag.untagged Body Boolean O 태깅되지 않은 아티팩트 포함 여부
scope Body Object O 이미지에 대한 정리 정책 정보
scope.include Body Boolean O 이미지에 대한 정리 정책 설정 여부
scope.pattern Body String O 정리 대상 이미지
parameters Body Object map O 정리 정책 설정
parameters.always Body Integer 설정되어 있을 시 필수 항상 n개의 아티팩트만 보관
parameters.latest_pulled_n_images Body Integer 설정되어 있을 시 필수 가장 최근에 Pull한 n개의 아티팩트만 보관
parameters.latest_pushed_n_images Body Integer 설정되어 있을 시 필수 가장 최근에 Push한 n개의 아티팩트만 보관
parameters.n_days_since_last_pull Body Integer 설정되어 있을 시 필수 Push한 날짜가 n일인 아티팩트만 보관
parameters.n_days_since_last_push Body Integer 설정되어 있을 시 필수 Pull한 날짜가 n일인 아티팩트만 보관

예시

{
    "disabled": true,
    "scope": {
        "include": true,
        "pattern": "test"
    },
    "tag": {
        "include": false,
        "pattern": "**",
        "untagged": false
    },
    "parameters": {
        "latest_pulled_n_images": 2
    }
}

응답

이 API는 공통 정보만 응답합니다.

이미지 정리 히스토리 목록 보기

이미지 정리 히스토리 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions/executions

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
executions Body Array O 이미지 정리 히스토리 목록
executions.id Body Integer O 이미지 정리 히스토리 ID
executions.dry_run Body Boolean O 테스트 실행 여부
executions.trigger Body String O 이미지 정리 실행 방식
executions.start_time Body String O 이미지 정리 시작 시간
executions.end_time Body String O 이미지 정리 종료 시간
executions.status Body String O 이미지 정리 상태

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "executions": [
        {
            "id": 350,
            "dry_run": false,
            "trigger": "MANUAL",
            "start_time": "2023-03-27T17:34:53Z",
            "end_time": "2023-03-27T17:34:54Z",
            "status": "Success"
        }
    ]
}

이미지 정리 히스토리 상세 보기

이미지 정리 히스토리를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions/executions/{executionId}/tasks

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
executionId URL String O 이미지 정리 히스토리 ID
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
tasks Body Array O 태스크 목록
tasks.id Body Integer O 태스크 ID
tasks.repository Body String O 정리된 이미지 이름
tasks.retained Body Integer O 이미지 보호 설정 여부
tasks.total Body Integer O 정리된 개수
tasks.start_time Body String O 정리 시작 시간
tasks.end_time Body String O 정리 종료 시간
tasks.status Body String O 태스크 상태

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "tasks": [
        {
            "id": 350,
            "repository": "busybox",
            "retained": 1,
            "total": 1,
            "start_time": "2023-03-27T17:34:53Z",
            "end_time": "2023-03-27T17:34:54Z",
            "status": "Success"
        }
    ]
}

이미지 정리 히스토리 로그 보기

이미지 정리 히스토리 로그를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions/executions/{executionId}/tasks/{taskId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
executionId URL String O 이미지 정리 히스토리 ID
taskId URL String O 이미지 정리 태스크 ID

응답

이름 종류 형식 필수 설명
tasks Body String O 이미지 정리 로그

이미지 정리 정책 실행

이미지 정리 정책을 실행합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions/executions

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
dry_run Body Boolean X 테스트 실행 여부

응답

이 API는 공통 정보만 응답합니다.

이미지 정리 주기 보기

이미지 정리 주기를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions/schedule

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID

응답

이름 종류 형식 필수 설명
trigger Body Object O 이미지 정리 주기 정보
trigger.kind Body String O 이미지 정리 유형
trigger.settings Body Object O 이미지 정리 주기 설정
trigger.settings.cron Body String O 이미지 정리 주기

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "trigger": {
        "kind": "Schedule",
        "settings": {
            "cron": ""
        }
    }
}

이미지 정리 주기 생성하기

이미지 정리 주기를 생성합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries/{registryId}/retentions/schedule

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryId URL String O 레지스트리 ID
settings Body Object O 이미지 정리 주기 설정
settings.cron Body String O 이미지 정리 주기

예시

{
    "settings": {
        "cron": "0 0 * * 0"
    }
}

응답

이 API는 공통 정보만 응답합니다.

웹훅 목록 보기

웹훅 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}/webhook/policies

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
policies Body Array O 웹훅 목록
policies.creation_time Body String O 웹훅 생성 시간
policies.enabled Body Boolean O 웹훅 활성화 여부
policies.event_types Body String List O 웹훅 이벤트 유형, PUSH_ARTIFACT/PULL_ARTIFACT/DELETE_ARTIFACT
policies.id Body Integer O 웹훅 ID
policies.name Body String O 웹훅 이름
policies.project_id Body Integer O 레지스트리 ID
policies.targets Body Object List O 웹훅 정보
policies.targets.address Body String O 웹훅 엔드포인트
policies.targets.type Body String O 웹훅 알림 유형, http/slack
policies.targets.auth_header Body String X 인증 헤더
policies.targets.skip_cert_verify Body Boolean X 인증서 검증 여부
policies.update_time Body String O 웹훅 변경 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "policies": [
        {
            "creation_time": "2023-03-27T22:53:16.719Z",
            "enabled": true,
            "event_types": [
                "PUSH_ARTIFACT",
                "PULL_ARTIFACT",
                "DELETE_ARTIFACT"
            ],
            "id": 1,
            "name": "test",
            "project_id": 2,
            "targets": [
                {
                    "address": "https://192.168.0.1",
                    "skip_cert_verify": true,
                    "type": "http"
                }
            ],
            "update_time": "2023-03-27T22:53:16.719Z"
        }
    ]
}

웹훅 보기

웹훅을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}/webhook/policies/{policyId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false
policyId URL String O 웹훅 ID

응답

이름 종류 형식 필수 설명
policy Body Object O 웹훅 정보
policy.creation_time Body String O 웹훅 생성 시간
policy.enabled Body Boolean O 웹훅 활성화 여부
policy.event_types Body String List O 웹훅 이벤트 유형, PUSH_ARTIFACT/PULL_ARTIFACT/DELETE_ARTIFACT
policy.id Body Integer O 웹훅 ID
policy.name Body String O 웹훅 이름
policy.project_id Body Integer O 레지스트리 ID
policy.targets Body Object List O 웹훅 정보
policy.targets.address Body String O 웹훅 엔드포인트
policy.targets.type Body String O 웹훅 알림 유형, http/slack
policy.targets.auth_header Body String X 인증 헤더
policy.targets.skip_cert_verify Body Boolean X 인증서 검증 여부
policy.update_time Body String O 웹훅 변경 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "policy": {
        "creation_time": "2023-03-27T22:53:16.719Z",
        "enabled": true,
        "event_types": [
            "PUSH_ARTIFACT",
            "PULL_ARTIFACT",
            "DELETE_ARTIFACT"
        ],
        "id": 1,
        "name": "test",
        "project_id": 2,
        "targets": [
            {
                "address": "https://192.168.0.1",
                "skip_cert_verify": true,
                "type": "http"
            }
        ],
        "update_time": "2023-03-27T22:53:16.719Z"
    }
}

웹훅 생성하기

웹훅을 생성합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}/webhook/policies

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false
enabled Body Boolean X 웹훅 활성화 여부
미입력 시 false 설정
event_types Body String List O 웹훅 이벤트 유형, PUSH_ARTIFACT/PULL_ARTIFACT/DELETE_ARTIFACT
name Body String X 웹훅 이름
targets Body Object List O 웹훅 정보
targets.address Body String O 웹훅 엔드포인트
targets.type Body String O 웹훅 알림 유형, http/slack
targets.auth_header Body String X 인증 헤더
targets.skip_cert_verify Body Boolean X 인증서 검증 여부

예시

{
    "event_types": [
        "PUSH_ARTIFACT",
        "PULL_ARTIFACT",
        "DELETE_ARTIFACT"
    ],
    "name": "test",
    "targets": [
        {
            "address":"https://192.168.1.1:8080",
            "skip_cert_verify":true,
            "type":"http"
        }
    ]
}

응답

이 API는 공통 정보만 응답합니다.

웹훅 삭제하기

웹훅을 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}/webhook/policies/{policyId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false
policyId URL String O 웹훅 ID

응답

이 API는 공통 정보만 응답합니다.

웹훅 변경하기

웹훅을 변경합니다.

PUT /ncr/v2.0/appkeys/{appKey}/registries/{registryNameOrId}/webhook/policies/{policyId}

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryNameOrId URL String O 레지스트리 이름 또는 ID, 이름이 숫자로만 되어 있으면 X-Is-Resource-Name 값 true 설정
X-Is-Resource-Name Header String X registryNameOrId 값 이름 여부, true/false
policyId URL String O 웹훅 ID
enabled Body Boolean X 웹훅 활성화 여부
event_types Body String List O 웹훅 이벤트 유형, PUSH_ARTIFACT/PULL_ARTIFACT/DELETE_ARTIFACT
name Body String X 웹훅 이름
targets Body Object List O 웹훅 정보
targets.address Body String O 웹훅 엔드포인트
targets.type Body String O 웹훅 알림 유형, http/slack
targets.auth_header Body String X 인증 헤더
targets.skip_cert_verify Body Boolean X 인증서 검증 여부

예시

{
    "event_types": [
        "PUSH_ARTIFACT"
    ],
    "targets": [
        {
            "address":"https://192.168.1.1:8080",
            "skip_cert_verify":true,
            "type":"http"
        }
    ]
}

응답

이 API는 공통 정보만 응답합니다.

컨테이너 이미지

컨테이너 이미지 목록 보기

컨테이너 이미지 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
images Body Array O 컨테이너 이미지 목록
images.id Body Integer O 컨테이너 이미지 ID
images.name Body String O 컨테이너 이미지 이름
images.project_id Body Integer O 레지스트리 ID
images.pull_count Body Integer O 컨테이너 이미지 pull 횟수
images.artifact_count Body Integer O 컨테이너 이미지 아티팩트 개수
images.creation_time Body String O 컨테이너 이미지 생성 시간
images.update_time Body String O 컨테이너 이미지 변경 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "images": [
        {
            "id": 1,
            "name": "hy/busybox",
            "project_id": 2,
            "description": "",
            "pull_count": 8,
            "artifact_count": 1,
            "creation_time": "2023-03-27T01:55:13.176Z",
            "update_time": "2023-03-27T02:02:07.764Z"
        }
    ]
}

컨테이너 이미지 보기

컨테이너 이미지를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름

응답

이름 종류 형식 필수 설명
image Body Object O 컨테이너 이미지 목록
image.id Body Integer O 컨테이너 이미지 ID
image.name Body String O 컨테이너 이미지 이름
image.project_id Body Integer O 레지스트리 ID
image.pull_count Body Integer O 컨테이너 이미지 pull 횟수
image.artifact_count Body Integer O 컨테이너 이미지 아티팩트 개수
image.creation_time Body String O 컨테이너 이미지 생성 시간
image.update_time Body String O 컨테이너 이미지 변경 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "image": {
        "id": 1,
        "name": "hy/busybox",
        "project_id": 2,
        "description": "",
        "pull_count": 8,
        "artifact_count": 1,
        "creation_time": "2023-03-27T01:55:13.176Z",
        "update_time": "2023-03-27T02:02:07.764Z"
    }
}

컨테이너 이미지 삭제하기

컨테이너 이미지를 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름

응답

이 API는 공통 정보만 응답합니다.

아티팩트 목록 보기

아티팩트 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)
with_scan_overview Query String X 취약점 정보 조회 여부
with_accessory Query String X 인증 정보 조회 여부

응답

이름 종류 형식 필수 설명
artifacts Body Array O 아티팩트 목록
artifacts.digest Body String O 아티팩트 다이제스트
artifacts.extra_attrs Body Object O 아티팩트 추가 정보
artifacts.scan_overview Body Object X 아티팩트 스캔 정보
artifacts.accessories Body Object X 아티팩트 인증 정보
artifacts.manifest_media_type Body String O 아티팩트 타입
artifacts.media_type Body String O 아티팩트 타입
artifacts.size Body Integer O 아티팩트 크기
artifacts.pull_time Body String O 아티팩트 pull 시간
artifacts.push_time Body String O 아티팩트 push 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "artifacts": [
        {
            "digest": "sha256:ba7000206594c2d72c3ab550453004c0dc50961157e5ebd2fb8ea1890099d02d",
            "extra_attrs": {
                "architecture": "arm64",
                "author": "",
                "config": {
                    "Cmd": [
                        "sh"
                    ],
                    "Env": [
                        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                    ]
                },
                "created": "2023-03-17T01:46:42.521879748Z",
                "os": "linux"
            },
            "icon": "sha256:0048162a053eef4d4ce3fe7518615bef084403614f8bca43b40ae2e762e11e06",
            "id": 1,
            "labels": null,
            "manifest_media_type": "application/vnd.docker.distribution.manifest.v2+json",
            "media_type": "application/vnd.docker.container.image.v1+json",
            "project_id": 2,
            "pull_time": "2023-03-27T02:02:01.703Z",
            "push_time": "2023-03-27T01:55:14.082Z",
            "references": null,
            "repository_id": 1,
            "size": 2003144,
            "tags": [
                {
                    "artifact_id": 1,
                    "id": 1,
                    "immutable": false,
                    "name": "latest",
                    "pull_time": "2023-03-27T02:02:01.703Z",
                    "push_time": "2023-03-27T01:55:14.642Z",
                    "repository_id": 1,
                    "signed": false
                }
            ],
            "type": "IMAGE",
            "accessories": null
        }
    ]
}

아티팩트 보기

아티팩트를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts/{reference}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
reference URL String O 아티팩트 이름
with_scan_overview Query String X 취약점 정보 조회 여부
with_accessory Query String X 인증 정보 조회 여부

응답

이름 종류 형식 필수 설명
artifact Body Object O 아티팩트 정보
artifact.digest Body String O 아티팩트 다이제스트
artifact.extra_attrs Body Object O 아티팩트 추가 정보
artifact.scan_overview Body Object X 아티팩트 스캔 정보
artifact.accessories Body Object X 아티팩트 인증 정보
artifact.manifest_media_type Body String O 아티팩트 타입
artifact.media_type Body String O 아티팩트 타입
artifact.size Body Integer O 아티팩트 크기
artifact.pull_time Body String O 아티팩트 pull 시간
artifact.push_time Body String O 아티팩트 push 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "artifact": {
        "digest": "sha256:ba7000206594c2d72c3ab550453004c0dc50961157e5ebd2fb8ea1890099d02d",
        "extra_attrs": {
            "architecture": "arm64",
            "author": "",
            "config": {
                "Cmd": [
                    "sh"
                ],
                "Env": [
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                ]
            },
            "created": "2023-03-17T01:46:42.521879748Z",
            "os": "linux"
        },
        "icon": "sha256:0048162a053eef4d4ce3fe7518615bef084403614f8bca43b40ae2e762e11e06",
        "id": 1,
        "labels": null,
        "manifest_media_type": "application/vnd.docker.distribution.manifest.v2+json",
        "media_type": "application/vnd.docker.container.image.v1+json",
        "project_id": 2,
        "pull_time": "2023-03-27T02:02:01.703Z",
        "push_time": "2023-03-27T01:55:14.082Z",
        "references": null,
        "repository_id": 1,
        "size": 2003144,
        "tags": [
            {
                "artifact_id": 1,
                "id": 1,
                "immutable": false,
                "name": "latest",
                "pull_time": "2023-03-27T02:02:01.703Z",
                "push_time": "2023-03-27T01:55:14.642Z",
                "repository_id": 1,
                "signed": false
            }
        ],
        "type": "IMAGE",
        "accessories": null
    }
}

아티팩트 삭제하기

아티팩트를 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts/{reference}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
reference URL String O 아티팩트 이름

응답

이 API는 공통 정보만 응답합니다.

아티팩트 태그 목록 보기

아티팩트 태그 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts/{reference}/tags

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
reference URL String O 아티팩트 이름
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
tags Body Array O 아티팩트 태그 목록
tags.id Body Integer O 아티팩트 태그 ID
tags.name Body String O 아티팩트 태그 이름
tags.pull_time Body String O 아티팩트 태그 pull 시간
tags.push_time Body String O 아티팩트 태그 push 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "tags": [
        {
            "artifact_id": 1,
            "id": 1,
            "immutable": false,
            "name": "latest",
            "pull_time": "2023-03-27T02:02:01.703Z",
            "push_time": "2023-03-27T01:55:14.642Z",
            "repository_id": 1,
            "signed": false
        }
    ]
}

아티팩트 태그 생성하기

아티팩트 태그를 생성합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts/{reference}/tags

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
reference URL String O 아티팩트 이름
name Body String O 아티팩트 태그 이름

예시

{
    "name": "test"
}

응답

이 API는 공통 정보만 응답합니다.

아티팩트 태그 삭제하기

아티팩트 태그를 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts/{reference}/tags/{tagName}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
reference URL String O 아티팩트 이름
tagName URL String O 아티팩트 태그 이름

응답

이 API는 공통 정보만 응답합니다.

아티팩트 취약점 정보 보기

아티팩트 취약점 정보를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts/{reference}/additions/vulnerabilities

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
reference URL String O 아티팩트 이름

응답

이름 종류 형식 필수 설명
vulnerability Body Object O 취약점 정보

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "vulnerability": {
        "application/vnd.security.vulnerability.report; version=1.1": {
            "generated_at": "2023-03-30T00:00:17.415030483Z",
            "scanner": {
                "name": "Trivy",
                "vendor": "Aqua Security",
                "version": "v0.35.0"
            },
            "severity": "Unknown",
            "vulnerabilities": [{
                    "id": "CVE-2011-3374",
                    "package": "apt",
                    "version": "2.2.4",
                    "fix_version": "",
                    "severity": "Low",
                    "description": "It was found that apt-key in apt, all versions, do not correctly validate gpg keys with the master keyring, leading to a potential man-in-the-middle attack.",
                    "links": [
                        "https://avd.aquasec.com/nvd/cve-2011-3374"
                    ],
                    "artifact_digests": [
                        "sha256:d77ece68485895479a344efa4934f80ad07a2814c3473d8580d3f31b35a615df"
                    ],
                    "preferred_cvss": {
                        "score_v3": null,
                        "score_v2": null,
                        "vector_v3": "",
                        "vector_v2": ""
                    },
                    "cwe_ids": [
                        "CWE-347"
                    ],
                    "vendor_attributes": {
                        "CVSS": {
                            "nvd": {
                                "V2Score": 4.3,
                                "V2Vector": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
                                "V3Score": 3.7,
                                "V3Vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N"
                            }
                        }
                    }
                }
            ]
        }
    }
}

아티팩트 스캔하기

아티팩트를 스캔합니다.

POST /ncr/v2.0/appkeys/{appKey}/registries/{registryName}/images/{imageName}/artifacts/{reference}/scan

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
registryName URL String O 레지스트리 이름
imageName URL String O 컨테이너 이미지 이름
reference URL String O 아티팩트 이름

응답

이 API는 공통 정보만 응답합니다.

컨테이너 이미지 복제

복제 목록 보기

복제 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/replications/policies

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
policies Body Array O 복제 목록
policies.filters Body Object List O 복제 대상 설정 정보
policies.filters.type Body String O 복제 대상 유형
policies.filters.value Body String O 복제 대상 필터 값
policies.dest_registry Body Object O 대상 레지스트리 정보
policies.dest_registsry.name Body String O 대상 리전 이름
policies.dest_registsry.id Body Integer X 대상 리전 ID, 값이 존재하면 Push 복제
policies.creation_time Body String O 생성 시간
policies.src_registry Body Object O 소스 레지스트리 정보
policies.src_registry.name Body String O 소스 리전 이름
policies.src_registry.id Body Integer X 소스 리전 ID, 값이 존재하면 Pull 복제
policies.trigger Body Object O 복제 실행 방식
policies.trigger.type Body String O manual(설정 안 함)/scheduled(사용자 설정)/event_based(이벤트 기반)
policies.trigger.trigger_settings Body Object X 복제 실행 주기, 복제 실행 방식이 scheduled일 때 필수
policies.trigger.trigger_settings.cron Body String X 복제 실행 주기(Unix cron 표현식 사용)
policies.dest_namespace Body String X 대상 레지스트리
policies.id Body Integer O 복제 ID
policies.enabled Body Boolean O 복제 활성화 여부
policies.name Body String O 복제 이름
policies.dest_project_id Body String O 복제 대상 프로젝트

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "policies": [
        {
            "update_time": "2023-03-27T23:59:49.381Z",
            "dest_namespace_replace_count": 1,
            "filters": [
                {
                    "type": "resource",
                    "value": "image"
                },
                {
                    "type": "name",
                    "value": "**"
                },
                {
                    "type": "tag",
                    "value": "**"
                }
            ],
            "dest_registry": {
                "status": "healthy",
                "credential": {
                    "access_key": "admin",
                    "access_secret": "*****",
                    "type": "basic"
                },
                "update_time": "2023-03-27T23:59:49.378Z",
                "name": "KR2",
                "url": "https://bddcecbd-alp-kr2-registry.container.cloud.toastoven.net",
                "insecure": true,
                "creation_time": "2023-03-14T02:41:04.893Z",
                "type": "harbor",
                "id": 1,
                "description": "replication"
            },
            "creation_time": "2023-03-27T23:59:49.112Z",
            "src_registry": {
                "status": "healthy",
                "credential": {
                    "access_secret": "*****",
                    "type": "secret"
                },
                "update_time": "",
                "name": "Local",
                "url": "http://harbor-63ae9964-core:80",
                "insecure": true,
                "creation_time": "0001-01-01T00:00:00Z",
                "type": "harbor"
            },
            "trigger": {
                "type": "event_based",
                "trigger_settings": {}
            },
            "id": 3,
            "enabled": true,
            "name": "test",
            "dest_project_id": "8x5SEWjM"
        }
    ]
}

복제 보기

복제를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/replications/policies/{policyId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
policyId URL String O 복제 ID

응답

이름 종류 형식 필수 설명
policy Body Object O 복제 정보
policy.filters Body Object List O 복제 대상 설정 정보
policy.filters.type Body String O 복제 대상 유형
policy.filters.value Body String O 복제 대상 필터 값
policy.dest_registry Body Object O 대상 레지스트리 정보
policy.dest_registsry.name Body String O 대상 리전 이름
policy.dest_registsry.id Body Integer X 대상 리전 ID, 값이 존재하면 Push 복제
policy.creation_time Body String O 생성 시간
policy.src_registry Body Object O 소스 레지스트리 정보
policy.src_registry.name Body String O 소스 리전 이름
policy.src_registry.id Body Integer X 소스 리전 ID, 값이 존재하면 Pull 복제
policy.trigger Body Object O 복제 실행 방식
policy.trigger.type Body String O manual(설정 안 함)/scheduled(사용자 설정)/event_based(이벤트 기반)
policy.trigger.trigger_settings Body Object X 복제 실행 주기, 복제 실행 방식이 scheduled일 때 필수
policy.trigger.trigger_settings.cron Body String X 복제 실행 주기(Unix cron 표현식 사용)
policy.dest_namespace Body String X 대상 레지스트리
policy.id Body Integer O 복제 ID
policy.enabled Body Boolean O 복제 활성화 여부
policy.name Body String O 복제 이름
policy.dest_project_id Body String O 복제 대상 프로젝트

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "policy": {
        "update_time": "2023-03-30T02:34:23.501Z",
        "dest_namespace_replace_count": 1,
        "filters": [
            {
                "type": "resource",
                "value": "image"
            },
            {
                "type": "name",
                "value": "**"
            },
            {
                "type": "tag",
                "value": "**"
            }
        ],
        "dest_registry": {
            "status": "healthy",
            "credential": {
                "access_key": "admin",
                "access_secret": "*****",
                "type": "basic"
            },
            "update_time": "2023-03-30T02:34:23.496Z",
            "name": "KR2",
            "url": "https://bddcecbd-alp-kr2-registry.container.cloud.toastoven.net",
            "insecure": true,
            "creation_time": "2023-03-14T02:41:04.893Z",
            "type": "harbor",
            "id": 1,
            "description": "replication"
        },
        "creation_time": "2023-03-30T02:34:23.154Z",
        "src_registry": {
            "status": "healthy",
            "credential": {
                "access_secret": "*****",
                "type": "secret"
            },
            "update_time": "",
            "name": "Local",
            "url": "http://harbor-63ae9964-core:80",
            "insecure": true,
            "creation_time": "0001-01-01T00:00:00Z",
            "type": "harbor"
        },
        "trigger": {
            "type": "event_based",
            "trigger_settings": {}
        },
        "id": 12,
        "enabled": true,
        "name": "test",
        "dest_project_id": "8x5SEWjM"
    }
}

복제 생성하기

복제를 생성합니다.

POST /ncr/v2.0/appkeys/{appKey}/replications/policies

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
dest_registry Body Object X Push 복제의 대상 레지스트리 정보
dest_registry.name Body String O Push 복제의 대상 리전 이름, KR2
dest_registry.id Body Integer O Push 복제의 대상 리전 ID, 1
src_registry Body Object X Pull 복제의 대상 레지스트리 정보
src_registry.name Body String O Pull 복제의 대상 리전 이름, KR2
src_registry.id Body Integer O Pull 복제의 대상 리전 ID, 1
trigger Body Object O 복제 실행 방식
trigger.type Body String O Push 복제, manual(설정 안 함)/scheduled(사용자 설정)/event_based(이벤트 기반)
Pull 복제, manual/scheduled
trigger.trigger_settings Body Object X 복제 실행 주기, 복제 실행 방식이 scheduled일 때 필수 설정
trigger.trigger_settings.cron Body String X 복제 실행 주기 설정(Unix cron 표현식 사용)
dest_namespace Body String X 대상 레지스트리
filters Body Object List X 복제할 대상 설정 정보, 전체를 대상으로 하는 경우 설정하지 않음
filters.type Body String X 복제할 대상 설정, name(이미지 이름)/tag(태그 이름)
filters.value Body String X 필터링할 값
filters.decoration Body String X 필터 유형이 tag일 때 설정, matches(해당하는)/excludes(제외한)
name Body String O 복제 이름
dest_project_id Body String X 복제 대상 프로젝트

예시

{
    "name": "test",
    "dest_registry": {
        "name": "KR2",
        "id":1
    },
    "trigger": {
        "type":"event_based"
    }
}

응답

이 API는 공통 정보만 응답합니다.

복제 삭제하기

복제를 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/replications/policies/{policyId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
policyId URL String O 복제 ID

응답

이 API는 공통 정보만 응답합니다.

복제 변경하기

복제를 변경합니다.

PUT /ncr/v2.0/appkeys/{appKey}/replications/policies/{policyId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
policyId URL String O 복제 ID
dest_registry Body Object X Push 복제의 대상 레지스트리 정보
dest_registry.name Body String X Push 복제의 대상 리전 이름, KR2
dest_registry.id Body Integer X Push 복제의 대상 리전 ID, 1
src_registry Body Object X Pull 복제의 대상 레지스트리 정보
src_registry.name Body String X Pull 복제의 대상 리전 이름, KR2
src_registry.id Body Integer X Pull 복제의 대상 리전 ID, 1
trigger Body Object O 복제 실행 방식
trigger.type Body String O Push 복제, manual(설정 안 함)/scheduled(사용자 설정)/event_based(이벤트 기반)
Pull 복제, manual/scheduled
trigger.trigger_settings Body Object 설정되어 있을 시 필수 복제 실행 주기, 복제 실행 방식이 scheduled일 때 필수 설정
trigger.trigger_settings.cron Body String 설정되어 있을 시 필수 복제 실행 주기 설정(Unix cron 표현식 사용)
dest_namespace Body String 설정되어 있을 시 필수 대상 레지스트리
filters Body Object List 설정되어 있을 시 필수 복제할 대상 설정 정보, 전체를 대상으로 하는 경우 설정하지 않음
filters.type Body String 설정되어 있을 시 필수 복제할 대상 설정, name(이미지 이름)/tag(태그 이름)
filters.value Body String 설정되어 있을 시 필수 필터링할 값
filters.decoration Body String 설정되어 있을 시 필수 필터 유형이 tag일 때 설정, matches(해당하는)/excludes(제외한)
name Body String O 복제 이름
dest_project_id Body String X 복제 대상 프로젝트

예시

{
    "name": "test",
    "dest_registry": {
        "name": "KR2",
        "id":1
    },
    "trigger": {
        "type":"event_based"
    }
}

응답

이 API는 공통 정보만 응답합니다.

복제 히스토리 목록 보기

복제 히스토리 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/replications/executions

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
executions Body Array O 복제 히스토리 목록
executions.status Body String O 복제 상태
executions.status_text Body String O 복제 상태
executions.trigger Body String O 복제 실행 방식
executions.start_time Body String O 복제 시작 시간
executions.end_time Body String O 복제 종료 시간
executions.id Body Integer O 복제 히스토리 ID
executions.policy_id Body Integer O 복제 ID

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "executions": [
        {
            "status": "Succeed",
            "status_text": "no resources need to be replicated",
            "trigger": "scheduled",
            "start_time": "2023-03-29T09:39:59.09Z",
            "end_time": "2023-03-29T09:39:59.373Z",
            "id": 845,
            "policy_id": 9
        }
    ]
}

복제 히스토리 보기

복제 히스토리를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/replications/executions/{executionId}/tasks

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
executionId URL String O 복제 히스토리 ID
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
tasks Body Array O 복제 히스토리 상세 정보
tasks.status Body String O 복제 상태
tasks.start_time Body String O 복제 시작 시간
tasks.dst_resource Body String O 대상 리소스
tasks.src_resource Body String O 소스 리소스
tasks.id Body Integer O Task ID
tasks.execution_id Body Integer O 복제 히스토리 ID
tasks.end_time Body String O 복제 종료 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "tasks": [
        {
            "status": "Succeed",
            "job_id": "e71b392a391027ced941c4bd",
            "start_time": "2023-03-30T08:25:21Z",
            "dst_resource": "hy/nginx [1 item(s) in total]",
            "src_resource": "hy/nginx [1 item(s) in total]",
            "resource_type": "artifact",
            "operation": "copy",
            "id": 430,
            "execution_id": 894,
            "end_time": "2023-03-30T08:25:46Z"
        }
    ]
}

복제 히스토리 로그 보기

복제 히스토리 로그를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/replications/executions/{executionId}/tasks/{taskId}/log

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
executionId URL String O 복제 히스토리 ID
taskId URL String O 복제 히스토리 task ID

응답

이름 종류 형식 필수 설명
log Body String O 복제 히스토리 로그

복제 실행하기

복제를 실행합니다.

POST /ncr/v2.0/appkeys/{appKey}/replications/executions

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
policy_id Body Integer O 복제 ID

예시

{
    "policy_id": 15
}

응답

이 API는 공통 정보만 응답합니다.

이미지 캐시

이미지 캐시 목록 보기

이미지 캐시 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/endpoints

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
page Query Integer X 조회할 페이지 번호
page_size Query Integer X 조회할 페이지 크기(default: 10)

응답

이름 종류 형식 필수 설명
endpoints Body Array O 이미지 캐시 목록
endpoints.status Body String O 이미지 캐시 상태
endpoints.credential Body Object O 소스 레지스트리 인증 정보
endpoints.credential.access_key Body String O 소스 레지스트리 access ID
endpoints.credential.access_secret Body String O 소스 레지스트리 access secret
endpoints.update_time Body String O 변경 시간
endpoints.name Body String O 이미지 캐시 이름
endpoints.url Body String O 소스 레지스트리 주소
endpoints.insecure Body Boolean O 인증서 검증 여부
endpoints.creation_time Body String O 생성 시간
endpoints.type Body String O 소스 레지스트리 유형
endpoints.id Body Integer O 이미지 캐시 ID
endpoints.description Body Integer O 이미지 캐시 설명

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "endpoints": [
        {
            "status": "healthy",
            "credential": {
                "access_key": "hnk8WpQl8uYGGzDiXVAb",
                "access_secret": "*****",
                "type": "basic"
            },
            "update_time": "2023-03-28T01:59:42.025Z",
            "name": "cache",
            "url": "https://095679f7-kr1-registry.container.nhncloud.com",
            "insecure": false,
            "creation_time": "2023-03-28T01:59:42.025Z",
            "type": "ncr",
            "id": 3,
            "description": "proxycache/ncr"
        }
    ]
}

이미지 캐시 생성하기

이미지 캐시를 생성합니다

POST /ncr/v2.0/appkeys/{appKey}/endpoints

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
name Body String O 이미지 캐시 이름
url Body String O 소스 레지스트리 주소
type Body String O 소스 레지스트리 유형, harbor/docker-hub/docker-registry/google-gcr/aws-ecr/azure-acr/quay/ncr
credential Body Object O 소스 레지스트리 인증 정보
credential.access_key Body String O 소스 레지스트리 access ID
credential.access_secret Body String O 소스 레지스트리 access secret
insecure Body Boolean X 인증서 검증 여부

예시

{
    "name": "test",
    "url": "https://095679f7-kr1-registry.container.nhncloud.com",
    "type": "ncr",
    "credential": {
        "access_key": "hnk8WpQl8uYGGzDiXVAb",
        "access_secret": "EL3vl7gPWeaEqwGs"
    }
}

응답

이 API는 공통 정보만 응답합니다.

이미지 캐시 삭제하기

이미지 캐시를 삭제합니다.

DELETE /ncr/v2.0/appkeys/{appKey}/endpoints/{endpointId}

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
endpointId URL String O 이미지 캐시 ID

응답

이 API는 공통 정보만 응답합니다.

이미지 캐시 변경하기

이미지 캐시를 변경합니다.

PUT /ncr/v2.0/appkeys/{appKey}/endpoints/{endpointId}

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
endpointId URL String O 이미지 캐시 ID
name Body String X 이미지 캐시 이름
url Body String X 소스 레지스트리 주소
access_key Body String X 소스 레지스트리 access ID
access_secret Body String X 소스 레지스트리 access secret
insecure Body Boolean X 인증서 검증 여부

예시

{
    "name": "test",
    "url": "https://095679f7-kr1-registry.container.nhncloud.com",
    "access_key": "hnk8WpQl8uYGGzDiXVAb",
    "access_secret": "EL3vl7gPWeaEqwGs"
}

응답

이 API는 공통 정보만 응답합니다.

스캔 설정

스캔 주기 보기

스캔 주기를 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/scanAll/schedule

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey

응답

이름 종류 형식 필수 설명
schedule Body Object O 스캔 주기 정보
schedule.id Body Integer O 스캔 주기 ID
schedule.schedule Body Object O 스캔 주기
schedule.schedule.cron Body String O 스캔 주기의 cron 형식
schedule.schedule.type Body String O 스캔 주기 유형
schedule.status Body String O 상태
schedule.creation_time Body String O 생성 시간
schedule.update_time Body String O 변경 시간

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "schedule": {
        "id": 5,
        "schedule": {
            "cron": "0 0 * * *",
            "type": "Daily"
        },
        "status": "Running",
        "creation_time": "2023-03-28T05:49:33.364Z",
        "update_time": "2023-03-28T05:49:33.364Z"
    }
}

스캔 주기 설정하기

스캔 주기를 설정합니다.

PUT /ncr/v2.0/appkeys/{appKey}/scanAll/schedule

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
schedule Body Object O 스캔 주기 정보
schedule.cron Body String O 스캔 주기의 cron 형식
schedule.type Body String O 스캔 주기 유형

예시

{
    "schedule": {
        "cron": "0 0 * * *",
        "type": "Daily"
    }
}

응답

이 API는 공통 정보만 응답합니다.

공통 CVE 허용 목록 보기

공통 CVE 허용 목록을 조회합니다.

GET /ncr/v2.0/appkeys/{appKey}/CVEAllowlist

요청

이 API는 요청 본문을 요구하지 않습니다.

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey

응답

이름 종류 형식 필수 설명
cve_allowlist Body Object O 허용 목록 정보
cve_allowlist.id Body Integer O 허용 목록 ID
cve_allowlist.items Body Object List O 허용 목록
cve_allowlist.items.cve_id Body String X CVE ID

예시

{
    "header": {
        "resultCode": 200,
        "resultMessage": "SUCCESS",
        "isSuccessful": true
    },
    "cve_allowlist": {
        "id": 14,
        "project_id": 0,
        "items": [
            {
                "cve_id": "CVE-2011-3374"
            }
        ]
    }
}

공통 CVE 허용 목록 변경하기

공통 CVE 허용 목록을 변경합니다.

PUT /ncr/v2.0/appkeys/{appKey}/CVEAllowlist

요청

이름 종류 형식 필수 설명
appKey URL String O 서비스 Appkey
items Body Object List O 허용 목록
items.cve_id Body String O CVE ID

예시

{
    "items": [{
        "cve_id": "CVE-2011-3374"
    }]
}

응답

이 API는 공통 정보만 응답합니다.

목차
TOP