arrow_back

gcloud를 사용하여 IAM 권한 구성

로그인 가입
지식을 테스트하고 커뮤니티와 공유하기
done
700개 이상의 실무형 실습, 기술 배지, 과정에 액세스

gcloud를 사용하여 IAM 권한 구성

실습 1시간 30분 universal_currency_alt 크레딧 1개 show_chart 입문
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
지식을 테스트하고 커뮤니티와 공유하기
done
700개 이상의 실무형 실습, 기술 배지, 과정에 액세스

GSP647

Google Cloud 사용자 주도형 실습

개요

이 실습에서는 IAM 및 gcloud와 관련하여 이해해야 할 세 가지 일반적인 영역을 살펴봅니다.

  • gcloud 환경 구성
  • 여러 gcloud 구성 사용
  • 서비스 계정 사용

이 실습에서는 gcloud CLI 도구를 사용하여 Cloud Identity and Access Management(IAM)의 명령어 특성을 설정하고 구성합니다.

학습할 내용

이 실습에서 학습할 내용은 다음과 같습니다.

  • IAM 검토 및 gcloud 클라이언트 사용
  • 여러 IAM 구성 생성 및 IAM 구성 간에 전환
  • 올바른 IAM 권한 식별 및 할당
  • 서비스 계정 생성 및 사용

환경 시작

두 개의 사용자 계정과 두 개의 프로젝트로 시작합니다.

  • user1은 두 프로젝트의 '소유자'입니다.
  • user2는 첫 번째 프로젝트 한정 '뷰어'입니다.

첫 번째 프로젝트에는 실행 중인 Linux 가상 머신(VM)이 있습니다.

시작 환경 이미지

IAM이란?

Google Cloud는 누가(ID) 어떤 리소스에 어떤 액세스 권한(역할)이 있는지 정의하여 액세스 제어를 관리할 수 있는 Cloud Identity and Access Management(IAM)를 제공합니다.

IAM에서 리소스 액세스 권한은 최종 사용자에게 직접 부여되지 않습니다. 대신 권한이 역할로 그룹화되고 역할은 인증된 주 구성원에게 부여됩니다. 전에는 IAM에서 주 구성원을 구성원이라고 주로 지칭했습니다. 일부 API에서는 여전히 이 용어를 사용합니다.

ID

Cloud IAM을 통해 주 구성원에게 액세스 권한을 제공하며, 주 구성원은 다음 유형 중 하나일 수 있습니다.

  • Google 계정
  • 서비스 계정
  • Google 그룹
  • Google Workspace 계정
  • Cloud ID 도메인
  • 인증된 모든 사용자
  • 모든 사용자

ID 유형에 대한 자세한 내용은 ID와 관련된 개념 가이드에서 자세히 알아보세요.

이 실습에서는 Google 계정, 서비스 계정, Cloud ID 도메인 그룹을 사용합니다.

역할

역할은 권한 모음입니다. 사용자에게 직접 권한을 할당할 수는 없으며, 대신 역할을 부여해야 합니다. 사용자에게 역할을 부여하면 역할에 포함된 모든 권한이 부여됩니다.

역할에 대한 자세한 내용은 역할 가이드를 참조하세요.

gcloud란?

gcloud CLI는 Cloud SDK에 포함되어 있습니다. gcloud 명령줄 도구를 사용하려면 먼저 시스템에 SDK를 다운로드하여 설치하고 초기화해야 합니다. 이 도구를 사용하여 명령줄이나 스크립트 및 기타 자동화에서 여러 가지 일반적인 플랫폼 작업을 수행할 수 있습니다.

gcloud에 대한 자세한 내용은 gcloud CLI 개요 가이드를 참조하세요.

설정 및 요건

실습 시작 버튼을 클릭하기 전에

다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머에는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지 표시됩니다.

실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.

이 실습을 완료하려면 다음을 준비해야 합니다.

  • 표준 인터넷 브라우저 액세스 권한(Chrome 브라우저 권장)
참고: 이 실습을 실행하려면 시크릿 모드 또는 시크릿 브라우저 창을 사용하세요. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.
  • 실습을 완료하기에 충분한 시간---실습을 시작하고 나면 일시중지할 수 없습니다.
참고: 계정에 추가 요금이 발생하지 않도록 하려면 개인용 Google Cloud 계정이나 프로젝트가 이미 있어도 이 실습에서는 사용하지 마세요. 참고: 이 실습에서는 Username1을 사용하여 로그인합니다.

실습을 시작하고 Google Cloud 콘솔에 로그인하는 방법

  1. 실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.

    • Google Cloud 콘솔 열기 버튼
    • 남은 시간
    • 이 실습에 사용해야 하는 임시 사용자 인증 정보
    • 필요한 경우 실습 진행을 위한 기타 정보
  2. Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).

    실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.

    팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.

    참고: 계정 선택 대화상자가 표시되면 다른 계정 사용을 클릭합니다.
  3. 필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.

    {{{user_0.username | "Username"}}}

    실습 세부정보 패널에서도 사용자 이름을 확인할 수 있습니다.

  4. 다음을 클릭합니다.

  5. 아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.

    {{{user_0.password | "Password"}}}

    실습 세부정보 패널에서도 비밀번호를 확인할 수 있습니다.

  6. 다음을 클릭합니다.

    중요: 실습에서 제공하는 사용자 인증 정보를 사용해야 합니다. Google Cloud 계정 사용자 인증 정보를 사용하지 마세요. 참고: 이 실습에 자신의 Google Cloud 계정을 사용하면 추가 요금이 발생할 수 있습니다.
  7. 이후에 표시되는 페이지를 클릭하여 넘깁니다.

    • 이용약관에 동의합니다.
    • 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
    • 무료 체험판을 신청하지 않습니다.

잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.

참고: Google Cloud 제품 및 서비스 목록이 있는 메뉴를 보려면 왼쪽 상단의 탐색 메뉴를 클릭합니다. 탐색 메뉴 아이콘

작업 1. gcloud 환경 구성

이미 이 실습에는 gcloud가 설치되지 않은 환경을 시뮬레이션하는 centos-clean이라는 Compute Engine 인스턴스가 있습니다. Google Cloud 콘솔을 사용하여 이 인스턴스에 연결합니다.

  1. 탐색 메뉴 > Compute Engine > VM 인스턴스로 이동하여 컴퓨팅 인스턴스 목록을 엽니다.

  2. centos-clean이라는 이름의 컴퓨팅 인스턴스가 포함된 줄에서 SSH를 클릭합니다.

참고: Compute Engine 인스턴스에는 Windows 유형과 Linux 유형이 있습니다. 이 실습에서는 Linux 인스턴스 유형을 사용합니다. 웹브라우저를 통해 시큐어 셸(SSH) 클라이언트를 사용하여 Linux 인스턴스에 쉽게 연결할 수 있습니다.

인스턴스에 자동 연결됩니다. Google Cloud에서는 인증 키를 자동으로 관리하여 안전하게 보관하고 액세스를 부여받은 사람만 사용할 수 있도록 합니다.
  1. 첫 테스트로, 버전을 확인하여 gcloud가 성공적으로 설치되었는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud --version

새 인스턴스 생성 및 기본 영역 업데이트

gcloud 명령줄 도구가 설치되었는지 확인한 후 컴퓨팅 인스턴스를 생성하여 몇 가지를 변경합니다.

  1. 먼저 gcloud에서 인증합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud auth login

계속하시겠어요(Y/n)? 메시지가 표시되면 Enter 키를 누릅니다.

  1. 새 탭에 표시된 링크로 이동합니다.

  2. 활성 사용자 이름()을 클릭하고 허용을 클릭합니다.

  3. 로그인하려는 머신의 gcloud CLI에 다음 인증 코드를 입력합니다 메시지가 표시되면 복사 버튼을 클릭한 다음 SSH 세션으로 돌아가서 승인 코드 입력: 메시지에 코드를 붙여넣습니다.

  4. SSH 세션에서 다음과 같이 리전과 영역을 설정합니다.

gcloud config set compute/region {{{project_0.default_region_1 | "Region1"}}} gcloud config set compute/zone {{{project_0.default_zone_1 | "Zone1"}}}
  1. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances create lab-1 --zone {{{project_0.default_zone_1 | "Zone1"}}} --machine-type=e2-standard-2

모두 올바르게 설정되어 있다면 명령어는 인스턴스를 생성합니다.

하지만 어떤 크기로 어디에 어떤 이미지가 사용될까요?

서비스에서 사용하는 기본값은 여러 가지가 있습니다. 일부는 gcloud 구성에서 제어할 수 있습니다. 예를 들어 인스턴스 위치는 영역 설정으로 제어할 수 있습니다.

프로젝트 1에 lab-1이라는 이름의 인스턴스 만들기
  1. 현재 gcloud 구성을 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config list

이제 compute 섹션, core 섹션, active configuration이 표시됩니다. 각각을 변경할 수 있지만 이 실습에서는 영역만 변경하겠습니다. VM이 만들어진 영역을 확인합니다.

  1. 이제 SSH 세션 실행 내에서 다음을 실행하여 사용할 수 있는 모든 영역을 나열합니다.
gcloud compute zones list
  1. 같은 리전에 있는 다른 영역 중 하나를 선택합니다. 예를 들어 현재 영역이 us-west2-a라면 us-west2-b를 선택할 수 있습니다.

  2. 현재 영역을 같은 리전의 다른 영역으로 변경합니다. SSH 세션 내에서 다음을 실행하여 ZONE을 선택한 영역으로 바꿉니다.

gcloud config set compute/zone ZONE
  1. 영역이 변경되었는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config list

명시한 영역에 변경사항이 반영된 것을 확인할 수 있습니다.

gcloud config set 명령어를 사용하여 다른 설정을 변경할 수 있습니다. 이러한 변경사항은 영구적이며 홈 디렉터리에 기록됩니다.

기본 구성은 ~/.config/gcloud/configurations/config_default에 저장됩니다.

인스턴스를 만들 때 기본 영역이 아닌 다른 영역을 사용하려면 --zone switch를 사용하면 됩니다. 예를 들어 gcloud compute instances create lab-1 --zone us-central1-f를 사용할 수 있습니다.

기본 영역 업데이트
  1. 영역이 구성 파일에 기록되었는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
cat ~/.config/gcloud/configurations/config_default

구성은 텍스트로만 저장되며 백업이나 복사가 가능함을 확인할 수 있습니다.

작업 2. 여러 IAM 구성 생성 및 IAM 구성 간에 전환

이제 1개 계정을 설정했습니다. 다른 팀에서 작업하거나 다른 계정에 액세스해야 하는 상황에서도 gcloud config로 관리할 수 있습니다.

다음 작업에서는 두 번째 구성을 만들고 두 구성 간에 전환하는 방법을 알아봅니다.

새 IAM 구성 만들기

이 실습에서는 두 번째 Google 계정으로 로그온할 수 있습니다. 이 계정에는 첫 번째 프로젝트에 대해 읽기 전용(뷰어) 액세스 권한이 있습니다. 이 사용자에 대한 새 구성을 만듭니다.

  1. 두 번째 사용자 계정에 대해 gcloud 구성을 새로 시작합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud init --no-launch-browser
  1. 옵션 2인 Create a new configuration(새 구성 만들기)을 선택합니다.

  2. 구성 이름: user2를 입력합니다.

  3. 새 계정으로 로그인: 옵션 3을 선택하면 제공된 다른 사용자 이름으로 로그인합니다.

  4. 계속하시겠어요(Y/n)? 메시지가 표시되면 Enter 키를 누릅니다.

  5. 새 탭에 표시된 링크로 이동합니다.

  6. 다른 계정 사용을 클릭합니다.

  7. 두 번째 사용자 계정()을 복사하고 이메일 또는 휴대전화 프롬프트에 붙여넣습니다.

  8. 실습을 시작할 때 사용한 것과 동일한 비밀번호를 복사하고 비밀번호 입력 프롬프트에 붙여넣습니다.

  9. 이해함을 클릭합니다.

  10. 허용을 클릭합니다.

Cloud SDK가 Google 계정과 동일한 액세스 권한을 갖는 것에 동의하는 것입니다.

  1. 로그인하려는 머신의 gcloud CLI에 다음 인증 코드를 입력합니다 프롬프트가 표시되면 복사 버튼을 클릭한 다음 SSH 세션으로 돌아가서 Enter authorization code:(승인 코드 입력:) 프롬프트에 코드를 붙여넣습니다.

  2. Pick cloud project to use(사용할 클라우드 프로젝트 선택):의 경우 현재 프로젝트()의 위치를 찾은 다음 프로젝트에 해당하는 번호를 입력합니다.

초기화가 완료되고 영역과 리전이 설정된 것을 확인할 수 있습니다.

gcloud user2 구성이 만들어졌는지 확인합니다.

새 계정 테스트하기

이 새 계정에는 프로젝트에 대한 뷰어 전용 액세스 권한이 있으므로 일부 리소스를 보고 생성하여 실제로 이 계정을 사용하고 있는지 테스트해 볼 수 있습니다.

  1. 첫 번째 프로젝트에서 세부정보를 볼 수 있는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances list

두 번째 사용자 계정에는 뷰어 액세스 권한이 있으므로 centos-cleanlab-1 인스턴스가 나열되어 있어야 합니다.

  1. 할당된 역할이 기본 뷰어이므로 첫 번째 프로젝트에서 인스턴스를 만들 수 없는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances create lab-2 --zone {{{project_1.default_zone_1 | "Zone2"}}} --machine-type=e2-standard-2

두 번째 사용자 계정에는 뷰어 액세스 권한만 있어 인스턴스를 만들 수 없으므로 이 명령어는 작동하지 않습니다. 작동하지 않는 데까지는 시간이 조금 걸립니다.

  1. 첫 번째 사용자의 구성(기본값)으로 다시 변경합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config configurations activate default

이제 원래 사용자 계정의 사용자 인증 정보를 다시 사용합니다. 이후 역할과 권한에 대해 알아보면서 두 계정 간에 전환할 수 있습니다.

작업 3. 올바른 IAM 권한 식별 및 할당

이 프로젝트에는 두 개의 사용자 계정이 제공되어 있습니다. 첫 번째 사용자는 두 프로젝트에 대한 모든 권한이 있으므로 관리자 계정으로 생각할 수 있습니다. 두 번째 사용자에게는 두 프로젝트에 대한 뷰어 전용 액세스 권한만 있습니다. 두 번째 사용자를 DevOps 사용자라고 부르며 해당 사용자 ID는 일반적인 DevOps 수준의 사용자를 나타냅니다.

다음으로 gcloud를 사용하여 버킷 및 인스턴스 생성을 허용하는 프로젝트의 맞춤 역할을 만들어 DevOps 사용자를 위한 하나의 프로젝트에 대한 액세스를 구성합니다.

역할 및 권한 검토

  1. 모든 역할을 보려면 SSH 세션 실행 내에서 다음을 실행합니다.
gcloud iam roles list | grep "name:"

역할 목록이 반환됩니다. 명령어에 grep "name:"을 추가하면 반환되는 데이터의 양이 역할 이름만 포함하도록 줄어듭니다.

이러한 역할 중 하나를 조사하여 역할에 할당된 권한을 확인합니다. 권한을 보려면 gcloud iam roles describe를 사용합니다. 간략히 역할만 보려면 roles/compute.instanceAdmin을 사용합니다.

  1. compute.instanceAdmin의 사전 정의된 역할을 조사합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud iam roles describe roles/compute.instanceAdmin

roles/compute.instanceAdmin에는 다음과 같은 많은 권한이 있지만, 나중에 필요한 최소 권한은 다음과 같습니다.

  • compute.instances.create
  • compute.instances.delete
  • compute.instances.start
  • compute.instances.stop
  • compute.instances.update
  • compute.disks.create
  • compute.subnetworks.use
  • compute.subnetworks.useExternalIp
  • compute.instances.setMetadata
  • compute.instances.setServiceAccount

전체 역할 목록과 할당된 권한을 검토하려면 IAM 권한 참조 가이드를 참조하세요.

두 번째 사용자에게 두 번째 프로젝트에 대한 액세스 권한 부여

역할에 권한이 포함되어 있다는 것을 알았으니 이제 사용자 계정에 역할과 그에 따른 모든 관련 권한을 할당하려면 어떻게 해야 할까요?

역할을 연결하는 방법에는 두 가지가 있습니다.

  • 사용자 및 조직에 연결
  • 사용자 및 프로젝트에 연결

다음으로 두 번째 사용자에게 두 번째 프로젝트에 대해 '뷰어'라는 기본 역할을 연결합니다.

두 번째 사용자에게 두 번째 프로젝트에 대한 액세스 권한이 없는지 테스트

  1. gcloud 구성을 두 번째 사용자(user2)로 다시 전환합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config configurations activate user2

이제 다시 user2가 되었습니다.

  1. PROJECTID2를 두 번째 프로젝트로 설정합니다. SSH 세션 내에서 다음을 실행합니다.
echo "export PROJECTID2={{{project_1.project_id | "PROJECT_ID"}}}" >> ~/.bashrc . ~/.bashrc gcloud config set project $PROJECTID2 참고: 이 명령어는 bashrc 파일을 추가하므로 주의해야 합니다.

WARNING: You do not appear to have access to project [your 2nd project id] or it does not exist라는 경고가 표시됩니다.

  1. 계속하시겠어요(Y/n)? 메시지가 표시되면 N을 입력하고 Enter 키를 누릅니다.

이는 user2에 PROJECTID2 프로젝트에 대한 액세스 권한이 없다는 의미입니다. 이 부분은 다음 섹션에서 수정합니다.

두 번째 사용자에게 두 번째 프로젝트의 뷰어 역할 할당

  1. 두 번째 사용자에게 액세스를 부여할 권한이 있는 기본값 gcloud 구성으로 다시 전환합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config configurations activate default
  1. 다음과 같이 jq를 설치합니다.
sudo yum -y install epel-release sudo yum -y install jq

그런 다음 USERID2 값을 두 번째 사용자 이름으로 설정하고 두 번째 사용자에게 두 번째 프로젝트에 대한 뷰어 역할을 결합합니다.

  1. SSH 세션 내에서 다음을 실행합니다.
echo "export USERID2={{{user_1.username | "Username2"}}}" >> ~/.bashrc . ~/.bashrc gcloud projects add-iam-policy-binding $PROJECTID2 --member user:$USERID2 --role=roles/viewer

명령어를 실행하면 텍스트가 다음과 같이 표시됩니다. 위로 스크롤해야 할 수도 있습니다.

Updated IAM policy for project [{{{project_1.project_id | "PROJECT_ID"}}}]. bindings: ... - members: - serviceAccount:{{{project_1.project_id | "PROJECT_ID"}}}@{{{project_1.project_id | "PROJECT_ID"}}}.iam.gserviceaccount.com role: roles/storage.admin - members: - user:{{{user_0.username | "Username1"}}} - user:{{{user_1.username | "Username2"}}} role: roles/viewer Username2를 프로젝트 2의 역할/뷰어로 제한

작업 4. user2에게 액세스 권한이 있는지 테스트

  1. gcloud 구성을 user2로 전환합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config configurations activate user2
  1. user2에 대한 구성을 두 번째 프로젝트로 변경합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config set project $PROJECTID2

이번에는 오류 메시지가 표시되지 않아야 합니다.

  1. 뷰어 액세스 권한이 있는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances list

이제 이 프로젝트에서는 인스턴스가 0개 표시됩니다.

  1. 두 번째 프로젝트에서 두 번째 사용자로 인스턴스를 만들어 봅니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances create lab-2 --zone {{{project_1.default_zone_1 | "Zone2"}}} --machine-type=e2-standard-2

user2는 프로젝트에 대한 뷰어 권한만 있기 때문에 이 명령어는 작동하지 않습니다.

  1. gcloud 구성을 기본값으로 전환합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config configurations activate default

이제 원래 사용자 계정의 사용자 인증 정보를 다시 사용합니다.

권한이 있는 새 역할 만들기

다음으로 DevOps팀에 필요한 권한 집합이 있는 새 역할을 만듭니다.

  • 인스턴스를 만드는 권한이 있는 devops라는 맞춤 역할을 만듭니다. SSH 세션 내에서 다음을 실행합니다.
gcloud iam roles create devops --project $PROJECTID2 --permissions "compute.instances.create,compute.instances.delete,compute.instances.start,compute.instances.stop,compute.instances.update,compute.disks.create,compute.subnetworks.use,compute.subnetworks.useExternalIp,compute.instances.setMetadata,compute.instances.setServiceAccount"

이 명령어는 프로젝트에 인스턴스를 만들고 관리하는 권한이 있는 devops라는 맞춤 역할을 만듭니다.

역할의 전체 이름이 나열되며, 역할이 프로젝트 내에 있으므로 경로는 projects/PROJECT/roles/ROLENAME 패턴입니다.

DevOps팀에 대한 권한이 있는 새 역할 만들기

두 번째 계정에 두 프로젝트 모두에 대한 역할 결합

역할을 만들었으니 사용자와 역할을 프로젝트에 결합해야 합니다. gcloud projects add-iam-policy-binding을 사용하여 결합합니다. 이 명령어를 더 쉽게 실행하기 위해 먼저 프로젝트 ID와 사용자 계정 등 몇 가지 환경 변수를 설정합니다.

  1. 두 번째 사용자에게 두 번째 프로젝트에 대한 iam.serviceAccountUser 역할을 결합합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud projects add-iam-policy-binding $PROJECTID2 --member user:$USERID2 --role=roles/iam.serviceAccountUser

서비스 계정이 연결된 인스턴스를 만들려면 권한이 필요합니다. iam.serviceAccountUser 역할에는 이러한 권한이 있으므로 이 사전 정의된 역할을 사용합니다.

user2가 project2와 역할 roles/iam.serviceAccountUser에 결합되었는지 확인
  1. 두 번째 사용자에게 두 번째 프로젝트에 대한 devops라는 맞춤 역할을 결합합니다. 이 페이지 왼쪽에서 두 번째 사용자 계정을 찾을 수 있습니다. 두 번째 사용자 계정에 USERID를 설정했는지 확인합니다.

SSH 세션 내에서 다음을 실행합니다.

gcloud projects add-iam-policy-binding $PROJECTID2 --member user:$USERID2 --role=projects/$PROJECTID2/roles/devops

명령어를 실행하면 텍스트가 다음과 같이 표시됩니다. 위로 스크롤해야 할 수도 있습니다.

Updated IAM policy for project [{{{project_1.project_id | "PROJECT_ID"}}}]. bindings: - members: - user:{{{user_1.username | "Username2"}}}@qwiklabs.net role: projects/{{{project_1.project_id | "PROJECT_ID"}}}/roles/devops Username2를 DevOps 역할에 결합

새로 할당된 권한 테스트

  1. gcloud 구성을 user2로 전환합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config configurations activate user2

이제 다시 user2가 되었습니다.

  1. lab-2라는 인스턴스를 만들어 봅니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances create lab-2 --zone {{{project_1.default_zone_1 | "Zone2"}}} --machine-type=e2-standard-2

이제 user2에 대해 인스턴스 생성이 작동합니다.

프로젝트 2에 lab-2라는 이름으로 인스턴스 만들기
  1. 인스턴스가 존재하는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances list

내 환경

마지막으로 변경 후 환경은 다음과 같습니다.

실습 진행 상황 이미지

작업 5. 서비스 계정 사용

gcloud를 사용하여 인증하고 역할을 통해 Google Cloud 서비스에 액세스하는 방법을 살펴보았습니다. 이제 일반적인 접근방식을 살펴보겠습니다.

애플리케이션 프로그래밍 인터페이스(API)를 사용하여 Cloud Storage 버킷을 읽고 쓰는 애플리케이션이 있습니다. 새 서버를 시작할 때마다 인증을 받아야 한다면 번거로울 뿐만 아니라 클라우드의 사용 취지와도 맞지 않으므로 서비스 계정을 사용합니다.

서비스 계정은 개별 최종 사용자가 아닌, 애플리케이션 또는 가상 머신(VM)에 속한 특별한 Google 계정입니다. 애플리케이션은 서비스 계정을 사용하여 Google API 서비스를 호출하므로 사용자가 직접 관여하지 않습니다.

서비스 계정에 대한 자세한 내용은 서비스 계정 가이드를 참조하세요.

이제 서비스 계정을 만들고 해당 서비스 계정을 컴퓨팅 인스턴스와 함께 사용한 다음 서비스 계정에서 필요한 액세스 권한이 허용되는지 테스트합니다.

서비스 계정 만들기

  1. gcloud 구성을 기본값으로 전환하면 user2에는 서비스 계정을 설정하고 구성할 수 있는 권한이 없습니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config configurations activate default
  1. 구성에서 프로젝트를 PROJECTID2로 설정합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config set project $PROJECTID2

알맞은 프로젝트를 대상으로 하는지 확인합니다.

  1. 서비스 계정을 만듭니다. SSH 세션 내에서 다음을 실행합니다.
gcloud iam service-accounts create devops --display-name devops 만들어진 DevOps 서비스 계정 확인
  1. 서비스 계정의 이메일 주소를 받습니다. SSH 세션 내에서 다음을 실행합니다.
gcloud iam service-accounts list --filter "displayName=devops" 참고: 필터를 사용하면 원하는 줄만 표시할 수 있습니다. 이메일 주소에 역할 이름과 프로젝트 ID가 포함되어 있음을 확인합니다.
  1. 이메일 주소를 SA라는 로컬 변수에 넣습니다. SSH 세션 내에서 다음을 실행합니다.
SA=$(gcloud iam service-accounts list --format="value(email)" --filter "displayName=devops")

이 명령어는 SA 로컬 변수를 서비스 계정의 이메일 주소로 설정합니다. 정말 유용한 명령어입니다.

  1. 서비스 계정에 iam.serviceAccountUser 역할을 부여합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud projects add-iam-policy-binding $PROJECTID2 --member serviceAccount:$SA --role=roles/iam.serviceAccountUser

이 역할을 통해 서비스 계정으로 컴퓨팅 인스턴스에 서비스 계정을 할당할 수 있습니다.

DevOps 서비스 계정이 project2와 역할 roles/iam.serviceAccountUser에 결합되어 있는지 확인

작업 6. 컴퓨팅 인스턴스와 함께 서비스 계정 사용

  1. 서비스 계정에 compute.instanceAdmin 역할을 부여합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud projects add-iam-policy-binding $PROJECTID2 --member serviceAccount:$SA --role=roles/compute.instanceAdmin

이 역할을 통해 서비스 계정으로 컴퓨팅 인스턴스를 관리할 수 있습니다.

DevOps 서비스 계정이 project2와 역할 roles/compute.instanceAdmin에 결합되어 있는지 확인
  1. DevOps 서비스 계정이 연결된 인스턴스를 만듭니다. 또한 인스턴스가 수행할 수 있는 API 호출을 정의하는 액세스 범위를 지정해야 합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances create lab-3 --zone {{{project_1.default_zone_1 | "Zone2"}}} --machine-type=e2-standard-2 --service-account $SA --scopes "https://www.googleapis.com/auth/compute"

액세스 범위는 인스턴스에 권한을 지정하는 기존 방법입니다. 액세스 범위는 보안 메커니즘이 아닙니다. 대신 gcloud 도구 또는 클라이언트 라이브러리의 요청에 사용되는 기본 OAuth 범위를 정의합니다. gRPC 또는 SignBlob API와 같은 OAuth를 통해 인증되지 않는 요청을 수행할 때는 아무런 영향을 주지 않습니다.

서비스 계정으로 실행되도록 인스턴스를 구성할 때는 액세스 범위를 설정해야 합니다.

인스턴스에 전체 cloud-platform 액세스 범위를 설정한 후 IAM 역할을 통해 서비스 계정의 API 액세스 권한을 안전하게 제한하는 것이 가장 좋습니다.

액세스 범위는 인스턴스별로 적용됩니다. 인스턴스를 만들 때 액세스 범위를 설정합니다. 액세스 범위는 인스턴스 수명 동안에만 유지됩니다.

서비스 계정이 속한 프로젝트에서 관련 API를 사용 설정하지 않았으면 액세스 범위가 적용되지 않습니다. 예를 들어 가상 머신 인스턴스에서 Cloud Storage에 액세스 범위를 부여하면 프로젝트에서 Cloud Storage API를 사용 설정한 경우에만 인스턴스가 Cloud Storage API를 호출할 수 있습니다.

lab-3에 서비스 계정이 연결되어 있는지 확인

작업 7. 서비스 계정 테스트

  1. gcloud compute ssh를 사용하여 새로 만든 인스턴스에 연결합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute ssh lab-3 --zone {{{project_1.default_zone_1 | "Zone2"}}}

계속 진행할지 묻는 메시지가 표시되면 Enter 키를 누릅니다.

비밀번호 생성 단계를 건너뛰려면 Enter 키를 두 번 누릅니다.

  1. 사용된 기본 이미지에는 이미 gcloud 구성이 포함되어 있습니다. SSH 세션 내에서 다음을 실행합니다.
gcloud config list

이제 구성에 서비스 계정이 포함되었습니다.

  1. 인스턴스를 만듭니다. 이를 통해 서비스 계정에 필수 권한이 있는지 테스트합니다.
gcloud compute instances create lab-4 --zone {{{project_1.default_zone_1 | "Zone2"}}} --machine-type=e2-standard-2

Enter 키를 눌러 이 VM의 기본 영역으로 지정할 수 있습니다.

  1. 연결된 역할이 작동하는지 확인합니다. SSH 세션 내에서 다음을 실행합니다.
gcloud compute instances list

서비스 계정에 권한이 있으므로 인스턴스가 나열되었음을 확인할 수 있습니다.

환경이 다음과 같이 표시됩니다.

최종 실습 환경 이미지

수고하셨습니다

Cloud SDK 도구인 gcloud를 사용하여 다음 작업을 완료했습니다.

  • gcloud 클라이언트 설치 및 구성
  • 여러 IAM 구성 생성 및 IAM 구성 간에 전환
  • 올바른 IAM 권한 식별 및 할당
  • 서비스 계정 생성 및 사용

다음 단계/더 학습하기

Google Cloud 교육 및 자격증

Google Cloud 기술을 최대한 활용하는 데 도움이 됩니다. Google 강의에는 빠른 습득과 지속적인 학습을 지원하는 기술적인 지식과 권장사항이 포함되어 있습니다. 기초에서 고급까지 수준별 학습을 제공하며 바쁜 일정에 알맞은 주문형, 실시간, 가상 옵션이 포함되어 있습니다. 인증은 Google Cloud 기술에 대한 역량과 전문성을 검증하고 입증하는 데 도움이 됩니다.

설명서 최종 업데이트: 2024년 4월 10일

실습 최종 테스트: 2024년 4월 10일

Copyright 2024 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.