클라우드 전문가라면 이미 AWS Identity and Access Management(IAM) 아키텍처에 익숙할 뿐 아니라 일부 권장사항을 따른 경험도 있을 것입니다. IAM에 관한 일반적인 우려사항은 다음과 같습니다.
- 리소스에 대한 액세스를 관리하는 가장 좋은 방법은 무엇일까요?
- 사용자가 실제로 필요한 리소스에만 액세스하도록 허용할 방법은 무엇일까요?
AWS에서 조직은 연결된 정책이 적용되는 IAM 사용자 및 역할을 함께 사용하여, 프로그래매틱 방식(AWS CloudShell 및 CLI를 통해) 및 그래픽 웹 인터페이스(AWS Management Console)를 통해 설정된 다양한 AWS 계정에 대한 액세스를 제어합니다.
AWS에서 시작하면 계정에 루트 사용자가 제공됩니다. 루트 사용자는 사용자의 모든 리소스와 구성에 액세스할 수 있으므로 일상적인 활동에는 적합하지 않습니다. 그런 다음 권한 수준과 사용자 인증 정보 유형을 결정하는 다양한 연결된 정책이 적용되는 IAM 사용자 그룹을 만듭니다.
- Management Console 액세스를 위한 사용자 및 비밀번호
- 프로그래매틱 방식의 액세스를 위한 액세스 키 쌍
조직은 계정 보안 구성을 보완하기 위해 임시 사용자 인증 정보와 다양한 권한 세트를 필요에 따라 사용자에게 제공하는 수단으로 IAM 역할을 사용하고 있습니다. 또한 제휴 사용자는 AWS 서비스에 임시로 액세스할 수 있으며, AWS 계정 사용자 인증 정보 없이도 사용자의 AWS 서비스에서 작업하는 다른 사용자에게 액세스 권한을 제공할 수 있습니다.

이제 Google Cloud에서 Identity and Access Management 제어를 구현하는 방법을 살펴보겠습니다.
개요
이 실습에서는 서비스 계정 사용자 역할을 사용하는 방법과 역할을 부여하는 방법을 알아봅니다.
목표
이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.
- IAM을 사용하여 액세스 제어 구현하기
- 특정 기능 또는 리소스에 대한 액세스 제한하기
- 서비스 계정 사용자 역할 사용하기
실습 설정
각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.
-
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다.
왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.
-
Google Cloud 콘솔 열기 버튼
- 남은 시간
- 이 실습에 사용해야 하는 임시 사용자 인증 정보
- 필요한 경우 실습 진행을 위한 기타 정보
-
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
참고: 계정 선택 대화상자가 표시되면 다른 계정 사용을 클릭합니다.
-
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
{{{user_0.username | "Username"}}}
실습 세부정보 패널에서도 사용자 이름을 확인할 수 있습니다.
-
다음을 클릭합니다.
-
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
{{{user_0.password | "Password"}}}
실습 세부정보 패널에서도 비밀번호를 확인할 수 있습니다.
-
다음을 클릭합니다.
중요: 실습에서 제공하는 사용자 인증 정보를 사용해야 합니다. Google Cloud 계정 사용자 인증 정보를 사용하지 마세요.
참고: 이 실습에 자신의 Google Cloud 계정을 사용하면 추가 요금이 발생할 수 있습니다.
-
이후에 표시되는 페이지를 클릭하여 넘깁니다.
- 이용약관에 동의합니다.
- 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
- 무료 체험판을 신청하지 않습니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
참고: Google Cloud 제품 및 서비스 목록이 있는 메뉴를 보려면 왼쪽 상단의 탐색 메뉴를 클릭하거나 검색창에 제품 또는 서비스 이름을 입력합니다.
작업 1. 두 사용자를 위한 설정
첫 번째 사용자로 Cloud 콘솔에 로그인하기
- 이 실습은 연결 세부정보 대화상자에서 확인할 수 있는 두 개의 사용자 이름을 프로비저닝합니다. 시크릿 창에서 Cloud 콘솔에 평소처럼 로그인하되, Qwiklabs에서 제공한 사용자 이름 1을 사용합니다. 두 사용자 이름 모두 동일한 비밀번호 하나를 사용한다는 데 유의하세요.
두 번째 사용자로 Cloud 콘솔에 로그인하기
- 시크릿 창에서 탭을 하나 더 엽니다.
-
console.cloud.google.com으로 이동합니다.
- 화면의 오른쪽 상단에 있는 사용자 아이콘을 클릭한 다음 계정 추가를 클릭합니다.
- Qwiklabs에서 제공한 사용자 이름 2로 Cloud 콘솔에 로그인합니다.
참고: 실습 중간에 사용자 이름 1 계정에서 로그아웃하는 경우 Qwiklabs에서 사용자 이름 2 계정을 삭제합니다. 따라서 사용자 이름 2 사용을 마칠 때까지 사용자 이름 1의 로그인 상태를 유지하세요.
작업 2. IAM 콘솔 탐색
사용자 이름 1 Cloud 콘솔 탭이 표시되었는지 확인합니다.
IAM 콘솔로 이동하여 역할 살펴보기
-
탐색 메뉴(
)에서 IAM 및 관리자 > IAM을 클릭합니다.
-
액세스 권한 부여를 클릭하고 드롭다운 메뉴에서 역할을 살펴봅니다.
역할 메뉴를 탐색하면서 각 리소스와 연결된 다양한 역할을 확인하세요.
-
취소를 클릭합니다.
-
사용자 이름 2의 Cloud 콘솔 탭으로 전환합니다.
-
탐색 메뉴(
)에서 IAM 및 관리자 > IAM을 클릭합니다. 목록을 둘러보면서 Qwiklabs 연결 세부정보 대화상자의 사용자 이름 1 및 사용자 이름 2와 연결된 이름이 있는 행을 찾습니다.
참고: 사용자 이름 2는 현재 프로젝트에 액세스할 수 있지만 프로젝트 소유자 역할이 없기 때문에 어떤 역할도 편집할 수 없습니다. 사용자 이름 2의 연필 아이콘 위로 마우스를 가져가면 확인해 볼 수 있습니다.
-
사용자 이름 1의 Cloud 콘솔 탭으로 다시 전환합니다.
- IAM 콘솔에서 사용자 이름 2의 연필 아이콘을 클릭합니다. 사용자 이름 2는 현재 뷰어 역할을 가지고 있습니다. 프로젝트 역할을 변경하면 안 됩니다.
-
취소를 클릭합니다.
작업 3. 액세스 테스트를 위한 리소스 준비
버킷을 만들고 샘플 파일 업로드하기
-
사용자 이름 1의 Cloud 콘솔 탭으로 전환합니다.
-
탐색 메뉴(
)에서 Cloud Storage > 버킷을 클릭합니다.
-
버킷 만들기를 클릭합니다.
-
다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
이름 |
전역적으로 고유한 이름을 입력 |
위치 유형 |
멀티 리전 |
참고: 버킷 이름을 기록해 두세요. 이후 단계에서 [YOUR_BUCKET_NAME]에 사용됩니다.
-
만들기를 클릭합니다.
참고: 공개 액세스가 차단됨이라는 메시지가 표시되고 이 버킷에 공개 액세스 방지 적용 옵션이 선택된 경우 확인을 클릭합니다.
-
파일 업로드를 클릭합니다.
- 로컬 머신에서 원하는 샘플 파일을 업로드합니다.
- 파일 업로드가 끝나면 파일이 포함된 행 끝의 점 3개를 클릭하고 이름 바꾸기를 클릭합니다.
- 파일 이름을 sample.txt로 바꾼 후 이름 바꾸기를 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
버킷을 만들고 샘플 파일 업로드하기
프로젝트 뷰어 액세스 확인하기
-
사용자 이름 2의 Cloud 콘솔 탭으로 전환합니다.
-
콘솔에서 탐색 메뉴 > Cloud Storage > 버킷으로 이동합니다.
-
사용자 이름 2가 버킷을 볼 수 있는지 확인합니다.
작업 4. 프로젝트 액세스 권한 삭제
사용자 이름 2의 프로젝트 뷰어 역할 삭제하기
-
사용자 이름 1의 Cloud 콘솔 탭으로 전환합니다.
-
탐색 메뉴(
)에서 IAM 및 관리자 > IAM을 클릭합니다.
-
사용자 이름 2를 선택하고 액세스 권한 삭제를 클릭합니다.
참고: 사용자 이름 2의 액세스 권한을 삭제하는지 확인합니다. 실수로 사용자 이름 1의 액세스 권한을 삭제한 경우 이 실습을 다시 시작해야 합니다.
-
확인을 클릭하여 확인합니다.
사용자가 목록에서 사라진 것을 알 수 있습니다. 이제 이 사용자에게는 액세스 권한이 없습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
프로젝트 액세스 권한 삭제하기
사용자 이름 2의 액세스 권한 상실 확인하기
-
사용자 이름 2의 Cloud 콘솔 탭으로 전환합니다.
-
탐색 메뉴(
)에서 Cloud 개요 > 대시보드를 클릭합니다.
-
탐색 메뉴(
)에서 Cloud Storage > 버킷을 클릭합니다.
오류가 표시됩니다. 오류가 표시되지 않으면 페이지를 새로 고침하세요. 사용자 이름 2는 여전히 Google Cloud 계정을 가지고 있지만 프로젝트에 액세스할 수 없습니다.
작업 5. 스토리지 액세스 권한 추가
스토리지 권한 추가하기
- Qwiklabs 연결 세부정보 대화상자에서 사용자 이름 2의 값을 복사합니다.
-
사용자 이름 1의 Cloud 콘솔 탭으로 전환합니다.
-
탐색 메뉴(
)에서 IAM 및 관리자 > IAM을 클릭합니다.
-
액세스 권한 부여를 클릭하여 사용자를 추가합니다.
-
새 주 구성원에 Qwiklabs 연결 세부정보 대화상자에서 복사한 사용자 이름 2 값을 붙여넣습니다.
-
역할 선택에서 Cloud Storage > 스토리지 객체 뷰어를 선택합니다.
-
저장을 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
스토리지 권한 추가하기
사용자 이름 2에게 스토리지 액세스 권한이 있음을 확인하기
-
사용자 이름 2의 Cloud 콘솔 탭으로 전환합니다.
참고: 사용자 이름 2에는 프로젝트 뷰어 역할이 없으므로 사용자는 콘솔에서 프로젝트나 프로젝트의 어떤 리소스도 볼 수 없습니다. 하지만 이 사용자에게는 Cloud Storage에 대한 특정 액세스 권한이 있습니다.
- Cloud Shell을 시작하려면 Cloud Shell 활성화(
)를 클릭합니다. 메시지가 표시되면 계속을 클릭합니다.
- 앞서 만든 버킷의 콘텐츠를 보려면
[YOUR_BUCKET_NAME]
을 직접 만든 Cloud Storage 버킷의 고유한 이름으로 바꾸어 다음 명령어를 실행합니다.
gcloud storage ls gs://[YOUR_BUCKET_NAME]
사용자 이름 2에 Cloud Storage에 대한 제한적 액세스 권한이 있는 것을 볼 수 있습니다.
-
사용자 이름 2의 Cloud 콘솔 탭을 닫습니다.
실습의 나머지 부분은 사용자 이름 1의 Cloud 콘솔 탭에서 진행됩니다.
-
사용자 이름 1의 Cloud 콘솔 탭으로 전환합니다.
작업 6. 서비스 계정 사용자 설정
여기서는 서비스 계정에 제한적인 권한을 할당하고 서비스 계정 사용자 역할을 사용하는 방법을 알아봅니다.
서비스 계정 만들기
-
탐색 메뉴(
)에서 IAM 및 관리자 > 서비스 계정을 클릭합니다.
-
+ 서비스 계정 생성을 클릭합니다.
-
서비스 계정 이름을 read-bucket-objects로 지정합니다.
-
만들고 계속하기를 클릭합니다.
-
역할 선택에서 Cloud Storage > 스토리지 객체 뷰어를 선택합니다.
-
계속을 클릭합니다.
-
완료를 클릭합니다.
서비스 계정에 사용자 추가하기
-
read-bucket-objects 서비스 계정을 선택합니다.
- 서비스 계정 이름의 오른쪽에 있는 점 3개를 클릭한 후 권한 관리를 클릭합니다.
참고: 사용자에게 서비스 계정 사용자 역할을 부여합니다. VM에 액세스할 수 있는 사용자의 경우 VM에서 서비스 계정을 사용할 수 있게 됩니다. 특정 사용자, 그룹 또는 도메인을 대상으로 이 작업을 수행할 수 있습니다. 이 실습에서는 Altostrat.com이라는 회사 내의 모든 사용자에게 서비스 계정 사용자 역할을 부여합니다. Altostrat.com은 데모와 학습에 사용되는 가상의 회사입니다.
-
액세스 권한 부여 버튼을 클릭합니다. 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
새 주 구성원 |
altostrat.com |
역할 |
서비스 계정 > 서비스 계정 사용자 |
-
저장을 클릭합니다.
Compute Engine 액세스 권한 부여하기
이제 Altostrat 조직 전체에 Compute Engine 관리자 역할을 부여합니다.
-
탐색 메뉴(
)에서 IAM 및 관리자 > IAM을 클릭합니다.
-
액세스 권한 부여를 클릭합니다.
- 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
새 주 구성원 |
altostrat.com |
역할 선택 |
Compute Engine > Compute 인스턴스 관리자(v1) |
-
저장을 클릭합니다.
참고: 특정 사용자에 대해 수행하는 작업의 리허설 단계입니다.
이 작업으로 사용자는 VM 인스턴스를 제한적으로 사용할 수 있게 됩니다. 사용자는 SSH를 통해 VM에 연결하고 몇 가지 관리 작업을 수행할 수 있습니다.
서비스 계정 사용자로 VM 만들기
-
탐색 메뉴(
)에서 Compute Engine > VM 인스턴스를 클릭합니다.
-
인스턴스 만들기를 클릭합니다.
- 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
이름 |
demoiam |
리전 |
|
영역 |
|
시리즈 |
E2 |
머신 유형 |
e2-micro(vCPU 2개, 1GB 메모리) |
부팅 디스크 |
Debian GNU/Linux 11(bullseye) |
서비스 계정 |
read-bucket-objects |
액세스 범위 |
각 API에 액세스 설정 |
스토리지 |
읽기 쓰기 |
-
만들기를 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
서비스 계정 사용자 설정 및 VM 만들기
작업 7. 서비스 계정 사용자 역할 살펴보기
이 시점에서 SSH를 통해 VM에 연결하고 다음 작업을 수행하여 사용자 테스트 액세스 권한을 가질 수 있습니다. 프로젝트의 소유자이므로 서비스 계정 사용자 역할은 이미 가지고 있습니다. 따라서 SSH를 사용하여 Cloud 콘솔에서 VM에 액세스하면 사용자의 경험을 시뮬레이션할 수 있습니다.
수행하는 작업과 결과는 타겟 사용자의 경우와 동일합니다.
서비스 계정 사용자 사용하기
-
demoiam에 대해 SSH를 클릭하여 터미널을 실행하고 연결합니다.
- 다음 명령어를 실행합니다.
gcloud compute instances list
결과(예시 출력):
ERROR: (gcloud.compute.instances.list) Some requests did not succeed:
- Required 'compute.zones.list' permission for 'projects/qwiklabs-gcp'
어떻게 된 것일까요? 왜 이렇게 되었을까요?
- 앞서 만든 버킷에서 sample.txt 파일을 복사합니다. 아래 명령어에서 끝에 있는 마침표도 명령어의 일부이며, '이 위치'에 복사하라는 의미입니다.
gcloud storage cp gs://[YOUR_BUCKET_NAME]/sample.txt .
결과(예시 출력):
Copying gs://train-test-iam/sample.txt...
/ [1 files][ 28.0 B/ 28.0 B]
Operation completed over 1 objects/28.0 B.
- 복사한 파일의 이름을 바꾸려면 다음 명령어를 실행합니다.
mv sample.txt sample2.txt
- 이름을 바꾼 파일을 버킷에 다시 복사하려면 다음 명령어를 실행합니다.
gcloud storage cp sample2.txt gs://[YOUR_BUCKET_NAME]
결과(예시 출력):
AccessDeniedException: 403 Caller does not have storage.objects.create access to bucket train-test-iam.
참고: 어떻게 된 것일까요?
SSH를 통해 인스턴스에 연결했기 때문에 같은 권한을 가지고 서비스 계정으로 작업할 수 있습니다.
인스턴스가 시작된 서비스 계정에는 스토리지 뷰어 역할이 있으므로 프로젝트의 GCS 버킷에서 객체를 다운로드할 수 있습니다.
프로젝트 내의 인스턴스를 나열하려면 compute.instance.list 권한을 부여해야 합니다. 서비스 계정에 이 권한이 없기 때문에 프로젝트에서 실행 중인 인스턴스를 나열할 수 없습니다.
서비스 계정에 객체 다운로드 권한이 있기 때문에 버킷에서 객체를 다운로드할 수 있습니다. 객체를 쓰는 권한은 없으므로 403 액세스 거부됨 메시지가 표시됩니다.
-
탐색 메뉴(
)에서 IAM 및 관리자 > IAM을 클릭합니다.
- 목록을 둘러보면서 read-bucket-objects가 있는 행을 찾아 연필 아이콘을 클릭합니다. read-bucket-objects에는 현재 스토리지 객체 뷰어 역할이 있습니다. 역할을 Cloud Storage > 스토리지 객체 생성자로 변경합니다.
-
저장을 클릭합니다.
-
demoiam의 SSH 창으로 돌아갑니다.
- 이름을 바꾼 파일을 버킷에 다시 복사하려면 다음 명령어를 실행합니다.
gcloud storage cp sample2.txt gs://[YOUR_BUCKET_NAME]
서비스 계정에 올바른 권한이 있기 때문에 이번에는 명령어가 성공합니다.
작업 8. 복습
이 실습에서는 IAM 역할을 사용자 이름 2 사용자와 서비스 계정 사용자에게 차례로 부여하고 취소하는 방법을 연습했습니다. 서비스 계정 사용자 인증 정보를 할당하고 이를 VM에 '베이크'하여 특정 목적의 승인된 배스천 호스트를 만들 수 있었습니다.
요약
보안 측면에서 Google Cloud와 AWS는 액세스 제어를 위한 주된 도구인 Identity and Access Management(IAM)부터 시작하여 유사점이 많습니다.
IAM은 AWS 및 Google Cloud 모두에서 다양한 서비스와 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. 이 도구를 사용해 인증(액세스 권한이 있는 사용자) 및 승인(사용자에게 허용되는 작업)을 관리할 수 있습니다. 다음과 같은 여러 주 구성원을 만들고 관리할 수도 있습니다.
IAM을 사용할 때는 할당하는 권한의 범위를 완전히 이해해야 합니다.
AWS에서는 다음과 같은 리소스 계층 구조를 사용할 수 있습니다.
- 조직 루트
- 중첩 가능한 조직 단위
- 계정
- 리소스
Google Cloud에서는 다음과 같은 계층 구조를 사용할 수 있습니다.
실습 종료하기
실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.
실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.
별점의 의미는 다음과 같습니다.
- 별표 1개 = 매우 불만족
- 별표 2개 = 불만족
- 별표 3개 = 중간
- 별표 4개 = 만족
- 별표 5개 = 매우 만족
의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.
의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.
Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.