연결 유효성 검사

이 문서는 서비스 계정 및 AWS 계정이 Assured Open Source Software 서비스에 액세스할 수 있도록 사용 설정되었는지 확인하는 데 도움이 됩니다.

서비스 계정 또는 (무료 등급에만 해당) AWS 계정 ID가 Assured OSS 저장소 및 선별된 패키지 포트폴리오에 액세스할 수 있도록 사용 설정되었는지 확인하려면 API를 사용하여 사용 가능한 Java 또는 Python 패키지를 나열합니다. Google Cloud 이렇게 하려면 API를 직접 호출하거나, Cloud Shell을 사용하여 API에 대한 curl 명령 줄 호출을 실행하면 됩니다.

무료 등급을 사용하는 경우 드물게 고객 사용 설정 양식 제출을 제출한 후 1시간 이상 권한 거부 오류가 발생할 수 있습니다.

이 문서는 프리미엄 등급과 무료 등급 모두에 적용됩니다.

시작하기 전에

  1. 최신 버전의 Google Cloud CLI를 설치합니다. 이전에 Google Cloud CLI를 설치한 경우 다음을 실행하여 최신 버전을 사용할 수 있는지 확인합니다.

    gcloud components update
    
  2. Assured OSS를 사용하여 액세스하려면 Google Cloud, Artifact Registry API 를 Assured OSS에 사용 설정한 서비스 계정의 상위 Google Cloud 프로젝트에 대해 사용 설정합니다. 프리미엄 등급을 사용하는 경우 설정 중에 API가 사용 설정됩니다.

  3. 다음 URL을 네트워크의 허용 목록에 추가합니다.

    • *.pkg.dev
    • artifactregistry.googleapis.com

인증 설정

Google Cloud

  1. 서비스 계정 키를 생성하고 다운로드합니다 . 서비스 계정 키 관리 권장사항을 따르는 것이 좋습니다 .

  2. Google Cloud CLI에 이미 로그인한 경우 기존 인증을 취소합니다.

    gcloud auth revoke
    
  3. 次を認証します Google Cloud:

    gcloud auth login --cred-file=FILEPATH.json
    

    여기서 FILEPATH는 서비스 계정 키의 경로입니다.

  4. 애플리케이션 기본 사용자 인증 정보를 업데이트합니다.

    export GOOGLE_APPLICATION_CREDENTIALS=FILEPATH.json
    

    여기서 FILEPATH는 서비스 계정 키의 경로입니다.

AWS의 경우

이 단계는 Assured OSS의 무료 등급에만 적용됩니다.

  1. 임시 사용자 인증 정보를 요청할 수 있도록 EC2 인스턴스를 설정합니다.

    1. AWS 관리 콘솔에 로그인합니다.
    2. AWS 관리 콘솔에서 EC2 대시보드로 이동하여 대상 EC2 인스턴스를 선택합니다.
    3. 작업 > 보안 > IAM 역할 수정 을 선택합니다.
    4. 새 IAM 역할 만들기 > 역할 만들기 를 선택합니다.
    5. 신뢰할 수 있는 항목 유형으로 AWS 서비스 를 선택합니다.
    6. 사용 사례로 EC2 를 선택합니다.
    7. AmazonEC2ReadOnlyAccess 권한을 추가하고 다음 을 클릭합니다.
    8. IAM 역할의 의미 있는 이름을 제공하고 다음 을 클릭합니다.
    9. IAM 역할 수정 으로 돌아갑니다. 새로 만든 역할을 선택하고 IAM 역할 업데이트 를 클릭합니다.
  2. 사용자 인증 정보 구성 파일을 생성합니다.

    gcloud iam workload-identity-pools create-cred-config \
    projects/ASSIGNED_PROJECT_NUMBER/locations/global/workloadIdentityPools/aoss-wif-pool/providers/aws-AWS_ACCOUNT_ID-provider \
    --service-account=aoss-wif-aws-AWS_ACCOUNT_ID-sa@ASSIGNED_PROJECT_ID.iam.gserviceaccount.com \
    --aws \
    --output-file=FILEPATH.json
    

    다음을 바꿉니다.

    • AWS_ACCOUNT_ID: AWS 계정의 12자리 숫자 (예: 123456789012)
    • FILEPATH: 구성을 저장할 파일 + ASSIGNED_PROJECT_ID: 사용 설정 메일에 언급된 대로 사용자에게 할당된 Google Cloud 프로젝트 ID + ASSIGNED_PROJECT_NUMBER: 사용 설정 메일에 언급된 대로 사용자에게 할당된 Google Cloud 프로젝트 번호

    AWS IMDSv2를 사용하는 경우 플래그 --enable-imdsv2를 이전 명령어에 추가합니다. 자세한 내용은 사용자 인증 정보 구성 만들기를 참조하세요.

  3. Google Cloud CLI에 이미 로그인한 경우 기존 인증을 취소합니다.

    gcloud auth revoke
    
  4. 次を認証します Google Cloud:

    gcloud auth login --cred-file=FILEPATH.json
    

    여기서 FILEPATH는 사용자 인증 정보 구성 파일의 경로입니다.

  5. 애플리케이션 기본 사용자 인증 정보를 업데이트합니다.

    export GOOGLE_APPLICATION_CREDENTIALS=FILEPATH.json
    

    여기서 FILEPATH는 서비스 계정 키 또는 사용자 인증 정보 구성 파일의 경로입니다.

인증 관련 문제 해결은 인증 오류 문제 해결을 참조하세요.

Assured OSS에서 사용 가능한 모든 Java 패키지 나열

REST API 를 사용하여 모든 Java 패키지와 버전을 나열할 수 있습니다.

Assured OSS의 무료 등급의 경우 다음 HTTP 요청을 입력합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts"

Assured OSS의 프리미엄 등급의 경우 다음 HTTP 요청을 입력합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages

PROJECT_ID를 Assured OSS를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.

다음은 무료 등급에서 Java 저장소에 연결하는 샘플 curl 명령어입니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts"

이 요청은 다음 샘플 응답과 비슷한 응답을 반환합니다.

  {
    "mavenArtifacts": [
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/com.alibaba:fastjson:1.2.83",
        "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/alibaba/fastjson/1.2.83/fastjson-1.2.83.pom",
        "groupId": "com.alibaba",
        "artifactId": "fastjson",
        "version": "1.2.83",
        "createTime": "2022-06-24T09:10:05.166879Z",
        "updateTime": "2022-06-24T09:10:05.166879Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/org.apache.logging.log4j:log4j-api:2.17.1",
        "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.pom",
        "groupId": "org.apache.logging.log4j",
        "artifactId": "log4j-api",
        "version": "2.17.1",
        "createTime": "2022-03-16T12:22:50.113695Z",
        "updateTime": "2022-03-16T12:22:50.113695Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/org.apache.logging.log4j:log4j-core:2.17.1",
      "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/org/apache/logging/log4j/log4j-core/2.17.1/log4j-core-2.17.1.pom",
        "groupId": "org.apache.logging.log4j",
        "artifactId": "log4j-core",
        "version": "2.17.1",
        "createTime": "2022-03-16T12:26:40.317215Z",
        "updateTime": "2022-03-16T12:26:40.317215Z"
      }
    ]
  }

사용 가능한 패키지가 많으면 API 응답이 페이지로 나눠질 수 있습니다. 목록이 불완전한 경우 응답에 연속 토큰 nextPageToken이(가) 반환됩니다. nextPageToken은 반환되는 마지막 결과를 나타냅니다. 후속 요청의 pageToken 매개변수에 nextPageToken 값을 전달하면 마지막 결과 이후에 시작하여 결과의 다음 페이지를 반환합니다.

결과의 다음 페이지를 보거나 페이지당 반환되는 객체 수를 늘리려면 다음 URL을 사용합니다.

  "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

다음을 바꿉니다.

  • NUMBER: 페이지당 반환할 항목 수 최대 허용 값은 1,000입니다.
  • NEXT_PAGE_TOKEN: JSON 응답에서 반환된 nextPageToken 토큰 값

또는 다음 스크립트를 사용하여 앞서 언급한 API 요청의 페이지로 나눠진 결과를 파일에 수집할 수 있습니다.

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME1
    [ -n "$nextPageToken" ]
do
:
done

선택사항: 정렬된 기본 Java 패키지 이름 목록을 FILENAME2에 쓰기

다음 추가 명령줄 작업은 반환된 Java 패키지의 원시 목록을 필터링하여 기본 패키지 이름 목록만 제공합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000" \
      | grep artifactId | sort -f | uniq >  FILENAME2

선택사항: 정렬된 Java 패키지 버전 목록을 FILENAME3에 쓰기

다음 추가 명령줄 작업은 반환된 Java 패키지의 원시 목록을 필터링하여 패키지 버전 목록만 제공합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME3

Assured OSS에서 사용 가능한 모든 Python 패키지 나열

REST API 를 사용하여 모든 Python 패키지와 버전을 나열할 수 있습니다. 이러한 패키지는 Python 3.8에서 사용할 수 있습니다.

Assured OSS의 무료 등급의 경우 다음 HTTP 요청을 입력합니다.

  GET https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages

Assured OSS의 프리미엄 등급의 경우 다음 HTTP 요청을 입력합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"

PROJECT_ID를 Assured OSS를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.

환경과 관련된 모든 패키지를 나열하려면, generator.sh 스크립트를 사용합니다.

다음 명령어는 무료 등급에서 Assured OSS Python 저장소에 연결하는 샘플 curl 명령어입니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages"

이 요청은 다음 샘플 응답과 비슷한 응답을 반환합니다.

  {
  "pythonPackages": [
    {
      "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/Flask:2.1.2",
      "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/flask/Flask-2.1.2-py3-none-any.whl",
        "packageName": "Flask",
        "version": "2.1.2",
        "createTime": "2022-07-13T11:06:54.163313Z",
        "updateTime": "2022-07-13T11:06:54.163313Z"
    },
    {
      "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/ujson:5.3.0",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/ujson/ujson-5.3.0-cp38-cp38-linux_x86_64.whl",
        "packageName": "ujson",
        "version": "5.3.0",
        "createTime": "2022-07-13T11:06:17.263638Z",
        "updateTime": "2022-07-13T11:06:17.263638Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/ujson:5.4.0",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/ujson/ujson-5.4.0-cp38-cp38-linux_x86_64.whl",
        "packageName": "ujson",
        "version": "5.4.0",
        "createTime": "2022-07-13T11:09:00.865162Z",
        "updateTime": "2022-07-13T11:09:00.865162Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/urllib3:1.26.8",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/urllib3/urllib3-1.26.8-py2.py3-none-any.whl",
        "packageName": "urllib3",
        "version": "1.26.8",
        "createTime": "2022-07-13T11:05:56.529484Z",
        "updateTime": "2022-07-13T11:05:56.529484Z"
      }
    ]
  }

사용 가능한 패키지가 많으면 API 응답이 페이지로 나눠질 수 있습니다. 목록이 불완전한 경우 응답에 연속 토큰 nextPageToken이(가) 반환됩니다. nextPageToken은 반환되는 마지막 결과를 나타냅니다. 후속 요청의 pageToken 매개변수에 nextPageToken 값을 전달하면 마지막 결과 이후에 시작하여 결과의 다음 페이지를 반환합니다.

결과의 다음 페이지를 보거나 페이지당 반환되는 객체 수를 늘리려면 무료 등급에서 다음 URL을 사용합니다.

  "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

다음을 바꿉니다.

  • NUMBER: 페이지당 반환할 항목 수 최대 허용 값은 1,000입니다.
  • NEXT_PAGE_TOKEN: JSON 응답에서 반환된 nextPageToken 토큰 값

또는 다음 스크립트를 사용하여 앞서 언급한 API 요청의 페이지로 나눠진 결과를 파일에 수집할 수 있습니다.

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME4
    [ -n "$nextPageToken" ]
do
:
done

선택사항: 정렬된 기본 Python 패키지 이름 목록을 FILENAME5에 쓰기

다음 추가 명령줄 작업은 반환된 Python 패키지의 원시 목록을 필터링하여 기본 패키지 이름 목록만 제공합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000" \
      | grep packageName | sort -f | uniq > FILENAME5

선택사항: 정렬된 Python 패키지 버전 목록을 FILENAME6에 쓰기

다음 추가 명령줄 작업은 반환된 Python 패키지의 원시 목록을 필터링하여 패키지 버전 목록만 제공합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME6

Assured OSS에서 사용 가능한 모든 Go 패키지 나열

REST API를 사용하여 모든 Go 패키지와 버전을 나열할 수 있습니다.

Assured OSS의 무료 등급의 경우 다음 HTTP 요청을 입력합니다.

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages"

Assured OSS의 프리미엄 등급의 경우 다음 HTTP 요청을 입력합니다.

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-go/packages

PROJECT_ID를 Assured OSS를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.

다음은 무료 등급에서 Go 저장소에 연결하는 샘플 curl 명령어입니다.

curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages

이 요청은 다음과 비슷한 응답을 반환합니다.

{
  "packages": [
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fauth",
      "createTime": "2025-08-05T06:04:54.442071Z",
      "updateTime": "2025-08-05T06:04:54.442071Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fauth%2Foauth2adapt",
      "createTime": "2025-08-05T06:04:41.242052Z",
      "updateTime": "2025-08-05T06:04:41.242052Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fcompute%2Fmetadata",
      "createTime": "2025-08-05T06:05:31.140186Z",
      "updateTime": "2025-08-05T06:05:31.140186Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fiam",
      "createTime": "2025-08-05T06:04:54.455300Z",
      "updateTime": "2025-08-05T06:04:54.455300Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Flogging",
      "createTime": "2025-08-05T06:05:36.186851Z",
      "updateTime": "2025-08-05T06:05:36.186851Z"
    }
  ]
}

사용 가능한 패키지가 많으면 API 응답이 페이지로 나눠질 수 있습니다. 목록이 불완전한 경우 응답에 연속 토큰 nextPageToken이 반환됩니다. nextPageToken은 반환되는 마지막 결과를 나타냅니다. 후속 요청의 pageToken 매개변수에 nextPageToken 값을 전달하면 마지막 결과 이후에 시작하여 결과의 다음 페이지를 반환합니다.

결과의 다음 페이지를 보거나 페이지당 반환되는 객체 수를 늘리려면 다음 URL을 사용합니다.

"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

다음을 바꿉니다.

  • NUMBER: 페이지당 반환할 항목 수 최대 허용 값은 1,000입니다.
  • NEXT_PAGE_TOKEN: JSON 응답에서 반환된 nextPageToken 토큰 값

또는 다음 스크립트를 사용하여 API 요청의 페이지로 나눠진 결과를 파일에 수집할 수 있습니다.

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME7
    [ -n "$nextPageToken" ]
do
:
done

선택사항: 정렬된 기본 Go 패키지 이름 목록을 FILENAME8에 쓰기

다음 작업은 반환된 Go 모듈의 원시 목록을 필터링하여 기본 패키지 이름 목록을 제공합니다.

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME8

선택사항: 정렬된 Go 패키지 버전 목록을 FILENAME9에 쓰기

모든 Go 패키지 버전을 나열하는 직접 HTTP 요청은 사용할 수 없지만 특정 Go 패키지의 모든 버전을 나열할 수 있습니다. FILENAME8의 목록에 식별된 각 Go 패키지의 버전을 반복적으로 나열하여 모든 Go 패키지 버전의 전체 목록을 생성할 수 있습니다.

다음 작업은 반환된 Go 패키지 버전의 원시 목록을 필터링하여 패키지 버전 목록을 제공합니다.

grep -o "packages/.*" FILENAME8 | tr -d '",' | cut -d '/' -f 2 | while read package_name; do curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/$package_name/versions | grep name | sort -f | uniq >> FILENAME9; done

다음 단계