IAM 인증 관리

이 페이지에서는 Memorystore for Valkey의 IAM 인증 기능에 대한 일반적인 태스크를 설명합니다. 이 기능에 대한 자세한 내용은 IAM 인증 정보를 참고하세요.

IAM 인증으로 인스턴스 만들기

IAM 인증을 사용하는 Memorystore for Valkey 인스턴스를 만들려면 create 명령어를 실행합니다.

gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth

다음을 바꿉니다.

  • INSTANCE_ID는 만들려는 Memorystore for Valkey 인스턴스의 ID입니다. 인스턴스 ID는 1~63자(영문 기준)여야 하며 소문자, 숫자, 하이픈만 사용해야 합니다. 소문자로 시작하고 소문자나 숫자로 끝나야 합니다.

  • REGION_ID: 인스턴스를 배치할 리전

  • NETWORK는 인스턴스를 만드는 데 사용되는 네트워크입니다. projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID 형식을 사용해야 합니다. 여기서 사용되는 네트워크 ID는 서비스 연결 정책에서 사용되는 네트워크 ID와 일치해야 합니다. 그렇지 않으면 create 작업이 실패합니다. 자세한 내용은 네트워킹을 참조하세요.

  • NODE_TYPE은 선택한 노드 유형입니다. 허용되는 값은 다음과 같습니다.

    • shared-core-nano
    • standard-small
    • highmem-medium
    • highmem-xlarge
  • SHARD_COUNT는 인스턴스의 샤드 수를 결정합니다. 샤드 개수는 인스턴스 데이터를 저장하기 위한 총 메모리 용량을 결정합니다. 인스턴스 사양에 대한 자세한 내용은 인스턴스 및 노드 사양을 참조하세요.

IAM 인증 권한 부여

IAM 액세스 권한을 부여하려면 IAM 역할 부여 안내를 사용하여 주 구성원에게 roles/memorystore.dbConnectionUser 역할을 부여하세요.

기본적으로 주 구성원에게 roles/memorystore.dbConnectionUser 역할을 부여하면 주 구성원이 프로젝트의 모든 인스턴스에 액세스할 수 있습니다.

인스턴스에 대한 제한된 IAM 관리자 역할 만들기

전체 IAM 관리자 액세스 권한을 부여하지 않고 인스턴스 연결 IAM 권한을 수정할 수 있는 역할을 만들 수 있습니다. roles/memorystore.dbConnectionUser 역할에 대한 제한된 IAM 관리자를 만들면 됩니다. 자세한 내용은 제한된 IAM 관리자 만들기를 참고하세요.

IAM 인증을 사용하는 인스턴스에 연결

  1. Valkey 인스턴스와 동일한 승인된 네트워크를 사용하는 Compute Engine VM이 아직 없으면 빠른 시작: Linux VM 사용을 따라 VM을 만들고 연결합니다.

  2. 프로젝트에서 Cloud Platform API 범위를 사용 설정합니다. 이 액세스 범위를 사용 설정하는 방법에 관한 자세한 내용은 서비스 계정 연결 및 액세스 범위 업데이트를 참고하세요. 이 범위의 권장사항에 관한 자세한 내용은 범위 권장사항을 참고하세요.

  3. 프로젝트에서 Memorystore for Valkey API를 사용 설정합니다.

    Memorystore for Valkey API

  4. Valkey 설치의 안내에 따라 Compute Engine VM에 valkey-cli를 설치합니다.

  5. 다음 명령어를 실행하여 IAM 사용자의 액세스 토큰을 가져옵니다.

    gcloud auth print-access-token
    
  6. 인스턴스의 검색 엔드포인트에 연결합니다.

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    다음을 바꿉니다.

    • NETWORK_ADDRESS은 인스턴스의 네트워크 주소입니다. 네트워크 주소를 보려면 인스턴스 정보 보기를 참고하세요.

    • PORT는 인스턴스 포트 번호입니다. 포트 번호를 보려면 인스턴스 정보 보기를 참고하세요.

    • ACCESS_TOKEN은 이전 단계에서 가져온 IAM 액세스 토큰입니다.

  7. CLUSTER SHARDS 명령어를 실행하여 노드 토폴로지를 확인합니다. 노드의 IP 주소와 포트 번호 중 하나를 기록해 둡니다.

  8. 다음 명령어를 실행하여 선택한 노드에 연결합니다.

    valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
    

    다음을 바꿉니다.

    • NODE_IP_ADDRESS는 이전 단계에서 찾은 노드의 IP 주소입니다.
    • NODE_PORT은 이전 단계에서 찾은 노드의 포트 번호입니다.
  9. Valkey SETGET 명령어를 실행하여 인스턴스의 노드에 인증된 연결을 설정했는지 확인합니다.

  10. Valkey 인스턴스에 대한 연결 테스트를 완료한 후 Valkey 인스턴스에 연결하는 데 사용한 Compute Engine VM을 삭제하는 것을 고려해야 합니다. 이렇게 하면 Cloud Billing 계정에 비용이 청구되지 않습니다.

  11. 변수를 적절한 값으로 바꿔 다음 명령어를 실행하여 valkey-cli를 사용하여 인증하고 인스턴스에 연결합니다.

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    다음을 바꿉니다.

    • NETWORK_ADDRESS은 인스턴스의 네트워크 주소입니다. 네트워크 주소를 보려면 인스턴스 정보 보기를 참고하세요.

    • PORT는 인스턴스 포트 번호입니다. 포트 번호를 보려면 인스턴스 정보 보기를 참고하세요.

    • ACCESS_TOKEN은 이전 단계에서 가져온 IAM 액세스 토큰입니다.

  12. Valkey SETGET 명령어를 실행하여 인스턴스에 인증된 연결을 설정했는지 확인합니다.

  13. Valkey 인스턴스에 대한 연결 테스트를 완료한 후 Valkey 인스턴스에 연결하는 데 사용한 Compute Engine VM을 삭제하는 것을 고려해야 합니다. 이렇게 하면 Cloud Billing 계정에 비용이 청구되지 않습니다.

액세스 토큰 가져오기 자동화

액세스 토큰은 수명이 짧아서 액세스 코드를 쉽게 하드 코딩할 수 없으므로 애플리케이션에서 액세스 토큰 가져오기를 자동화하는 것이 좋습니다.

  1. (선택사항) 아직 서비스 계정을 만들지 않은 경우 애플리케이션의 서비스 계정을 만듭니다(서비스 계정 만들기 및 관리 참조).

    gcloud iam service-accounts create SA_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    다음을 바꿉니다.

    • SA_NAME은 서비스 계정의 이름입니다.
    • DESCRIPTION은 서비스 계정에 대한 설명입니다(선택사항).
    • DISPLAY_NAME은Google Cloud 콘솔에 표시할 서비스 계정 이름입니다.
  2. 프로젝트에 대해 서비스 계정에 memorystore.dbConnectionUser 권한을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --role="memorystore.dbConnectionUser"
    

    다음을 바꿉니다.

    • PROJECT_ID는 프로젝트 ID입니다.
    • SA_NAME은 서비스 계정의 이름입니다.
    • ROLE_NAME은 역할 이름입니다(예: roles/compute.osLogin).
  3. 애플리케이션을 지정된 서비스 계정으로 인증합니다. 자세한 내용은 서비스 계정을 참조하세요.

    인기 있는 클라이언트 라이브러리를 사용하여 애플리케이션을 인증하는 방법을 보여주는 코드 샘플은 클라이언트 라이브러리 코드 샘플을 참고하세요.

IAM 인증을 사용하는 인스턴스에 연결하는 코드 샘플

IAM 인증을 사용하는 인스턴스에 연결하도록 클라이언트 라이브러리를 설정하는 방법에 관한 Valkey 호환 코드 샘플을 보려면 IAM 인증 및 전송 중인 데이터 암호화 코드 샘플을 참고하세요.

IAM 인증 관련 오류 메시지 문제 해결

오류 메시지 권장 조치 설명

-WRONGPASS invalid username-password pair or user is disabled

Memorystore for Valkey 서버에 제공된 사용자 이름과 액세스 토큰 확인 제공된 사용자 이름 또는 액세스 토큰이 잘못되었습니다. 'default'만 지원되는 사용자 이름입니다. 애플리케이션에서 이미 '기본' 사용자 이름을 사용하고 있는 경우 액세스 토큰이 만료되지 않았으며 IAM 인증을 사용하는 인스턴스에 연결의 안내에 따라 검색되었는지 확인합니다. 최근에 변경된 경우 IAM 권한이 전파되는 데 몇 분 정도 걸릴 수 있습니다.

-NOAUTH Authentication required

애플리케이션이 Memorystore for Valkey 서버에 IAM 액세스 토큰을 제공하도록 구성되어 있는지 확인 애플리케이션이 Memorystore for Valkey 서버에 액세스 토큰을 제공하지 않습니다. IAM 인증을 사용하는 인스턴스에 연결의 안내에 따라 애플리케이션이 액세스 토큰을 제공하도록 구성되어 있는지 확인합니다.

-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded. See https://cloud.google.com/memorystore/docs/valkey/manage-iam-auth#error_messages.

지수 백오프로 재시도 IAM 백엔드에 과부하가 발생하여 Memorystore for Valkey 서버에 할당량 초과 오류가 반환되었습니다. 애플리케이션은 추가 연결 실패를 방지하기 위해 지수 백오프로 이 오류를 재시도해야 합니다.

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error. See https://cloud.google.com/memorystore/docs/valkey/manage-iam-auth#error_messages.

지수 백오프로 재시도 IAM 백엔드에서 Memorystore for Valkey 서버에 일시적인 오류를 반환했습니다. 애플리케이션은 추가 연결 실패를 방지하기 위해 지수 백오프로 이 오류를 재시도해야 합니다.