IAM으로 액세스 제어

이 페이지에서는 Identity and Access Management(IAM)를 사용하여 Memorystore for Redis 프로젝트 액세스와 권한을 제어하는 방법을 설명합니다.

개요

Google Cloud는 사용자가 특정 Google Cloud 리소스에 대한 세부적인 액세스 권한을 부여하고 다른 리소스에 대한 무단 액세스를 방지할 수 있는 IAM을 제공합니다. 이 페이지에서는 Memorystore for Redis IAM 역할 및 권한을 설명합니다. 역할 및 권한에 관한 자세한 내용은 IAM 문서를 참조하세요.

Memorystore for Redis는 Redis 리소스에 대한 액세스를 쉽게 제어할 수 있도록 사전 정의된 역할 모음을 제공합니다. 사전 정의된 역할이 요구 사항을 충족하지 못하는 경우 커스텀 역할을 만들 수도 있습니다. 또한 기존의 기본 역할(편집자, 뷰어, 소유자)도 계속 제공되지만, Memorystore for Redis 역할처럼 세부적인 제어 기능을 제공하지는 않습니다. 특히 기본 역할은 Memorystore for Redis뿐 아니라 Google Cloud 전반의 리소스에 대한 액세스를 제공합니다. 기본 역할에 대한 자세한 내용은 기본 역할을 참조하세요.

권한 및 역할

이 섹션에서는 Memorystore for Redis에서 지원하는 권한과 역할을 요약합니다.

사전 정의된 역할

Memorystore for Redis는 주 구성원에 세분화된 권한을 제공하는 데 사용할 수 있는 일부 사전 정의된 역할을 제공합니다. 주 구성원에게 부여하는 역할은 해당 주 구성원이 실행할 수 있는 작업을 제어합니다. 주 구성원은 개인, 그룹, 서비스 계정이 될 수 있습니다.

동일한 주 구성원에 여러 역할을 부여할 수 있으며, 이러한 권한이 있는 경우 언제든지 주 구성원에게 부여된 역할을 변경할 수 있습니다.

폭넓은 역할일수록 세부적으로 정의된 역할을 포함합니다. 예를 들어, Redis 편집자 역할에는 Redis 뷰어 역할의 모든 권한에 추가로 Redis 편집자 역할의 권한까지 포함됩니다. 마찬가지로 Redis 관리자 역할에는 Redis 편집자 역할의 모든 권한에 추가로 관리자 권한까지 포함됩니다.

기본 역할(소유자, 편집자, 뷰어)은 Google Cloud 전반에 대한 권한을 제공합니다. Memorystore for Redis와 관련된 역할은 일반적인 Google Cloud 사용에 필요한 다음 Google Cloud 권한을 제외하고 Memorystore for Redis 권한만 제공합니다.

resourcemanager.projects.get
resourcemanager.projects.list

다음 표에는 Memorystore for Redis에 사용할 수 있는 사전 정의된 역할과 Memorystore for Redis 권한이 나와 있습니다.

역할 이름 Redis 권한 설명

roles/owner

소유자

redis.*

Google Cloud의 모든 리소스에 대한 전체 액세스 및 제어, 사용자 액세스 관리

roles/editor

편집자 *.getIamPolicy.setIamPolicy를 제외한 모든 redis 권한 모든 Google Cloud 및 Redis 리소스에 대한 읽기-쓰기 액세스 권한(권한 수정 기능을 제외한 전체 제어 권한)

roles/viewer

뷰어

redis.*.get redis.*.list

Redis 리소스를 포함한 모든 Google Cloud 리소스에 대한 읽기 전용 액세스 권한

roles/redis.admin

Redis 관리자

redis.*

모든 Memorystore for Redis 리소스에 대한 전체 제어 권한

roles/redis.editor

Redis 편집자 다음을 제외한 모든 redis 권한

redis.instances.create redis.instances.delete redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

Memorystore for Redis 인스턴스 관리 인스턴스를 만들거나 삭제할 수 없습니다.

roles/redis.viewer

Redis 뷰어 다음을 제외한 모든 redis 권한

redis.instances.create redis.instances.delete redis.instances.update redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

모든 Memorystore for Redis 리소스에 대한 읽기 전용 액세스 권한

권한과 권한의 역할

다음 표는 Memorystore for Redis가 지원하는 각 권한과 그 권한을 포함하는 Memorystore for Redis 역할을 나열합니다.

권한 Redis 역할 기본 역할

redis.instances.list

Redis 관리자
Redis 편집자
Redis 뷰어
리더

redis.instances.get

Redis 관리자
Redis 편집자
Redis 뷰어
리더

redis.instances.create

Redis 관리자 작성자

redis.instances.update

Redis 관리자
Redis 편집자
작성자

redis.instances.updateAuth

Redis 관리자 작성자

redis.instances.getAuthString

Redis 관리자 작성자

redis.instances.delete

Redis 관리자 작성자

redis.instances.upgrade

Redis 관리자 작성자

redis.instances.import

Redis 관리자 작성자

redis.instances.export

Redis 관리자 작성자

redis.locations.list

Redis 관리자
Redis 편집자
Redis 뷰어
리더

redis.locations.get

Redis 관리자
Redis 편집자
Redis 뷰어
리더

redis.operations.list

Redis 관리자
Redis 편집자
Redis 뷰어
리더

redis.operations.get

Redis 관리자
Redis 편집자
Redis 뷰어
리더

redis.operations.delete

Redis 관리자 작성자

커스텀 역할

사전 정의된 역할로 사용자의 고유한 비즈니스 요구 사항이 해결되지 않을 경우, 권한을 지정하여 자신의 커스텀 역할을 정의할 수 있습니다. 이를 지원하기 위해 IAM은 커스텀 역할을 제공합니다. Memorystore for Redis의 커스텀 역할을 만들 때 resourcemanager.projects.getresourcemanager.projects.list를 모두 포함해야 합니다. 그렇지 않으면 Google Cloud 콘솔이 Memorystore for Redis에 맞게 작동하지 않습니다. 자세한 내용은 권한 종속 항목을 참조하세요. 커스텀 역할을 만드는 방법을 알아보려면 커스텀 역할 만들기를 참조하세요.

Google Cloud 콘솔에서 일반적인 작업에 필요한 권한

사용자가 Google Cloud 콘솔을 사용하여 Redis용 Memorystore를 사용하도록 설정하려면 사용자 역할에 resourcemanager.projects.getresourcemanager.projects.list 권한이 포함되어야 합니다.

다음 표에서는 Google Cloud 콘솔에서 일반적인 태스크에 필요한 다른 권한을 제공합니다.

작업 필요한 추가 권한
인스턴스 목록 페이지 표시

redis.instances.get
redis.instances.list

인스턴스 만들기 및 편집

redis.instances.create
redis.instances.get
redis.instances.list
compute.networks.list

인스턴스 삭제

redis.instances.delete
redis.instances.get
redis.instances.list

Cloud Shell에서 인스턴스에 연결

redis.instances.get
redis.instances.list
redis.instances.update

인스턴스 정보 보기

redis.instances.get
monitoring.timeSeries.list

RDB 백업 파일 가져오기 및 내보내기

redis.instances.import
redis.instances.export

인스턴스의 Redis 버전 업그레이드

redis.instances.upgrade

gcloud 명령어에 필요한 권한

사용자가 gcloud 명령어를 사용하여 Memorystore for Redis를 사용하도록 하려면 사용자 역할에 resourcemanager.projects.getresourcemanager.projects.list 권한이 포함되어 있어야 합니다.

다음 표에는 gcloud 명령어를 호출하는 사용자가 각 gcloud redis 하위 명령어에 대해 갖고 있어야 하는 권한 목록을 확인할 수 있습니다.

명령어 필수 권한
gcloud redis instances auth

redis.instances.updateAuth
redis.instances.getAuthString

gcloud redis instances create

redis.instances.get
redis.instances.create

gcloud redis instances delete

redis.instances.delete

gcloud redis instances update

redis.instances.get
redis.instances.update

gcloud redis instances list

redis.instances.list

gcloud redis instances describe

redis.instances.get

gcloud redis instances import

redis.instances.import

gcloud redis instances export

redis.instances.export

gcloud redis instances upgrade

redis.instances.upgrade

gcloud redis operations list

redis.operations.list

gcloud redis operations describe

redis.operations.get

gcloud redis regions list

redis.locations.list

gcloud redis regions describe

redis.locations.get

gcloud redis zones list

redis.locations.list

API 메서드에 필요한 권한

다음 표에는 호출자가 Redis용 Memorystore API에서 각 메서드를 호출하거나 이 API를 사용하는 Google Cloud 도구(예: Google Cloud 콘솔 또는 gcloud 명령줄 도구)를 사용하여 태스크를 수행해야 하는 권한이 나와 있습니다.

메서드 필수 권한

locations.get

redis.locations.get

locations.list

redis.locations.list

instances.create

redis.instances.create

instances.delete

redis.instances.delete

instances.get

redis.instances.get

instances.list

redis.instances.list

instances.patch

redis.instances.update

instances.import

redis.instances.import

instances.export

redis.instances.export

instances.upgrade

redis.instances.upgrade

operations.get

redis.operations.get

operations.list

redis.operations.list

Redis용 Memorystore 서비스 계정

각 Redis용 Memorystore 인스턴스에는 다른 Google Cloud 리소스와 통신하는 데 사용하는 서비스 계정이 있습니다.

내보내기 또는 CEMK 사용과 같이 서비스 계정에 특정 역할이나 권한을 부여해야 하는 경우도 있습니다.

Redis용 Memorystore 서비스 계정 형식

인스턴스의 서비스 계정은 생성 시점에 따라 두 가지 형식 중 하나를 사용합니다.

  • 첫 번째 형식은 다음과 같습니다.

    [PROJECT_NUMBER]-compute@developer.gserviceaccount.com

  • 두 번째 형식은 다음과 같습니다.

    service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

인스턴스에서 사용하는 서비스 계정의 소스 정보는 인스턴스의 서비스 계정 보기를 참조하세요.

알려진 문제

경우에 따라 [PROJECT_NUMBER]-compute@developer.gserviceaccount.com 형식을 사용하는 서비스 계정이 조직 정책과 충돌할 수 있습니다. 자세한 내용과 이 문제를 해결하는 단계는 도메인 제한 공유 조직 정책 문제를 참조하세요.

인스턴스의 서비스 계정 확인

인스턴스의 서비스 계정을 보려면 다음 명령어를 실행하고 persistenceIamIdentity 아래에 나열된 서비스 계정을 기록해 둡니다.

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

Redis AUTH 권한

다음 표에서는 사용자가 Redis용 기본 Memorystore AUTH 작업을 수행하기 위해 필요한 최소 권한을 보여줍니다.

권한 필요 Redis AUTH가 사용 설정된 Memorystore 인스턴스 만들기 기존 Redis 인스턴스에서 AUTH 사용 설정/사용 중지 AUTH 문자열 보기 Redis 인스턴스의 AUTH 사용 설정 /사용 중지 여부 확인
redis.instances.create X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.updateAuth X X
redis.instances.getAuthString X X X

전송 중인 데이터 암호화 권한

다음 표에서는 Memorystore for Redis의 전송 중인 데이터 암호화를 사용 설정하고 관리하는 데 필요한 권한을 보여줍니다.

권한 필요 전송 중인 데이터 암호화로 Memorystore 인스턴스를 만듭니다. 인증 기관 다운로드
redis.instances.create X
redis.instances.get X

유지보수 정책 권한

아래 표에서는 Memorystore for Redis의 유지보수 정책을 관리하는 데 필요한 권한을 보여줍니다.

권한 필요 유지보수 정책이 사용 설정된 Memorystore 인스턴스 만들기 기존 Memorystore 인스턴스의 유지보수 정책 만들기 또는 수정 유지보수 정책 설정 보기 유지보수 재예약
redis.instances.create X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.rescheduleMaintenance X X X

가져오기 및 내보내기에 필요한 권한

가져오기 및 내보내기에 커스텀 역할을 사용하려면 2개의 개별 커스텀 역할이 필요합니다. 하나는 사용자의 커스텀 역할이며 다른 하나는 Redis 인스턴스의 서비스 계정에 대한 추가 커스텀 역할입니다. 서비스 계정의 커스텀 역할은 Cloud Storage 버킷 수준 권한을 사용합니다.

인스턴스의 서비스 계정을 찾으려면 인스턴스의 서비스 계정 보기를 참조하세요.

서비스 계정에 대한 권한

전체 프로젝트가 아닌 버킷 수준의 서비스 계정에만 스토리지 권한을 부여하면 됩니다. 자세한 내용은 버킷 수준 정책에 주 구성원 추가를 참조하세요.

서비스 계정에 버킷 수준 권한을 부여하면 'Memorystore에서 서비스 계정 xxxx@xxxx.gserviceaccount.com 에 가져오기/내보내기에 필요한 권한이 있는지 확인할 수 없습니다.'의 메시지를 무시할 수 있습니다. 권한을 확인하거나 업데이트하는 데 도움이 필요하면 프로젝트 관리자에게 문의하세요. 필요한 권한은 가져오기/내보내기 권한 문서를 참조하세요. 아래 나열된 권한을 사용자 계정 및 서비스 계정의 커스텀 역할에 적용하면 가져오기/내보내기가 성공합니다.

서비스 계정의 커스텀 역할 권한 gcloud로 가져오기 gcloud로 내보내기 Google Cloud 콘솔로 가져오기 Google Cloud 콘솔로 내보내기
storage.buckets.get
storage.objects.get X X
storage.objects.create X X
storage.objects.delete X (선택사항)
(기존 RDB 파일을 덮어쓸 수 있는 권한을 부여합니다).
X (선택사항)
(기존 RDB 파일을 덮어쓸 수 있는 권한을 부여합니다).

사용자 계정에 대한 권한

사용자 계정의 커스텀 역할 권한 gcloud로 가져오기 gcloud로 내보내기 Google Cloud 콘솔로 가져오기 Google Cloud 콘솔로 내보내기
resourcemanager.projects.get X X
redis.instances.get
redis.instances.list X X X X
redis.instances.import X X
redis.instances.export X X
redis.operations.get X
redis.operations.list X X
redis.operations.cancel
storage.buckets.list X X
storage.buckets.get X X
storage.objects.list X X
storage.objects.get X X

다음 단계