npm용 Artifact Registry에 대한 인증 구성

제3자 애플리케이션을 사용하여 저장소에 연결할 때는 Artifact Registry에 인증해야 합니다.

Cloud Build 또는 Google Cloud Google Kubernetes Engine 및 Cloud Run과 같은 런타임 환경에 대한 인증을 구성할 필요는 없지만 필요한 권한 이 구성되어 있는지 확인해야 합니다.

Node.js는 Artifact Registry 저장소에 대한 요청을 인증하는 두 가지 방법을 지원합니다.

  • 액세스 토큰: 애플리케이션의 인증이 실제 사용자에 의해 관리되는 경우 액세스 토큰을 사용합니다.
  • 비밀번호 인증: 애플리케이션이 애플리케이션 기본 사용자 인증 정보를 지원하지 않지만 사용자 이름과 비밀번호로 인증을 지원하는 경우 이 옵션을 사용합니다.

시작하기 전에

  1. Google Cloud CLI를 설치합니다. 설치 후 Google Cloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init

    외부 ID 공급업체 (IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  2. (선택사항) cloud CLI 명령어의 기본값을 구성합니다.
  3. Windows에서 저장소에 연결하는 경우 PowerShell을 설치합니다.
  4. 애플리케이션 대신 작동하도록 서비스 계정을 만듭니다.
  5. npm을 처음 사용하는 경우 개요를 참조하여 범위가 지정된 패키지와 인증 설정의 구성 파일에 대해 알아보세요.

인증 토큰 생성

Artifact Registry에서 패키지를 인증하려면 먼저 인증 토큰을 생성해야 합니다. 그런 다음 패키지에서 Artifact Registry로 요청할 때 이 토큰을 사용할 수 있습니다.

또는 Google Cloud외부에서 oauth2 Google Cloud 액세스 토큰을 생성할 수 있습니다. oauth2l

액세스 토큰은 60분 동안 유효합니다. 저장소와 상호작용하는 명령어를 실행하기 직전에 액세스 토큰을 생성합니다. 액세스 토큰이 만료된 경우 새 액세스 토큰을 생성해야 합니다.

gcloud를 사용하여 토큰 생성

Google Cloud를 사용하여 oauth2 액세스 토큰을 생성하려면 다음 명령어를 실행합니다.

export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

이제 Node.js 패키지에서 Artifact Registry로 요청할 때 ACCESS_TOKEN을 참조할 수 있습니다.

gcloud를 사용하지 않고 토큰 생성

oauth2l CLI만 사용하여 액세스 토큰을 생성하려면 다음 단계를 따르세요.

  1. 다음 명령어를 실행하여 최신 버전의 oauth2l을 설치합니다.

    go install github.com/google/oauth2l@latest
    
  2. 다음 명령어를 실행합니다.

    export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"
    

    Google Cloud SHA256 해시 토큰을 생성하고 ACCESS_TOKEN 변수에 저장합니다. 이제 Node.js 패키지에서 Artifact Registry로 요청할 때 ACCESS_TOKEN을 참조할 수 있습니다.

서비스 계정 키로 비밀번호 인증 구성

Node.js 애플리케이션에서 지정된 사용자 이름과 비밀번호로 인증을 요구할 때 이 방법을 사용합니다.

서비스 계정 키는 장기 사용자 인증 정보입니다. 다음 가이드라인을 사용하여 저장소에 대한 액세스를 제한합니다.

  • 저장소와 상호작용할 수 있도록 전용 서비스 계정을 사용하는 것이 좋습니다.
  • 서비스 계정에 필요한 최소한의 Artifact Registry 역할을 부여합니다. 예를 들어 아티팩트만 다운로드하는 서비스 계정에 Artifact Registry 리더를 할당합니다.
  • 조직의 그룹에 특정 저장소에 대한 여러 액세스 수준이 필요한 경우 프로젝트 수준이 아닌 저장소 수준에서 액세스 권한을 부여합니다.
  • 사용자 인증 정보 관리 권장사항을 따릅니다.

서비스 계정을 만들고 인증을 구성하려면 다음 안내를 따르세요.

  1. 애플리케이션 대신 작동하도록 서비스 계정을 만들거나 자동화에 사용할 기존 서비스 계정을 선택합니다.

    Artifact Registry로 인증을 설정하려면 서비스 계정 키 파일의 위치가 필요합니다. 기존 계정의 경우 서비스 계정 페이지에서 키를 보고 새 키를 만들 수 있습니다.

    서비스 계정 페이지로 이동

  2. 저장소 액세스 권한을 부여하기 위해 서비스 계정에 적절한 Artifact Registry 역할 을 부여합니다.

  3. 현재 gcloud CLI 세션에서 서비스 계정을 활성화하려면 다음 명령어를 실행합니다.

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    장소

    • ACCOUNT는 사용자 또는 서비스 계정입니다.
    • KEY-FILE은 서비스 계정 JSON 키 파일의 경로입니다.
  4. 다음 명령어를 실행하여 저장소 구성을 출력합니다.

    gcloud artifacts print-settings npm [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILE
    

    장소

    • PROJECT는 프로젝트 ID입니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
    • REPOSITORY는 저장소 ID입니다. 기본 Artifact Registry 저장소를 구성한 경우 이 플래그가 명령어에서 생략되었을 때 사용됩니다.
    • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
    • SCOPE-NAME은 저장소와 연결할 npm 범위의 이름입니다.

      범위를 사용하면 항상 올바른 저장소에서 패키지를 게시하고 설치할 수 있습니다.

      범위가 지정되지 않은 패키지는 기본 npm 레지스트리와 연결됩니다(일반적으로 npm 공개 레지스트리). 범위를 지정하지 않으면 반환된 구성이 Artifact Registry 저장소를 기본 레지스트리로 설정합니다. Node.js 프로젝트가 공개 npm 레지스트리와 Artifact Registry 저장소 모두에서 패키지를 설치해야 하는 경우 문제가 발생할 수 있습니다.

    • KEY-FILE은 서비스 계정 JSON 키 파일의 경로입니다.

  5. Node.js 프로젝트의 .npmrc 구성 파일에 반환된 구성 설정을 추가합니다. 이 파일은 일반적으로 package.json과 동일한 디렉터리에 있습니다. 게시하는 패키지의 Node.js 프로젝트와 npm 저장소에서 종속 항목을 설치할 프로젝트에 이러한 설정을 포함해야 합니다.

  6. 연결할 다른 Node.js 저장소가 있는 경우 이전 단계를 반복하여 설정을 가져오고 이를 .npmrc 파일에 추가합니다.

다음 단계