이 문서에서는 OS 로그인을 사용하여 조직 전반에서 VM 인스턴스에 대한 액세스를 관리하는 방법을 설명합니다.
이 주제에서는 다음 태스크를 설명합니다.
- 조직 정책을 사용하는 조직에 OS 로그인 사용 설정: 조직에 있는 모든 신규 VM 인스턴스에 OS 로그인을 사용 설정하려면 조직 정책을 사용합니다.
- 조직 외부의 사용자에게 인스턴스 액세스 권한 부여: 조직 외부의 사용자 계정이 SSH를 사용하여 인스턴스에 연결하도록 허용합니다.
- OS 로그인 API 액세스 관리: 사용자 액세스 권한으로 OS 로그인 API를 사용하는 것을 허용하거나 거부합니다. 또한 OS 로그인 API의 기능을 사용 설정 또는 사용 중지합니다.
- OS 로그인 이벤트 감사: SSH 키의 추가, 삭제, 업데이트 또는 POSIX 정보의 삭제 같은 OS 로그인 관련 이벤트와 활동을 추적합니다.
- Directory API를 사용하여 사용자 계정 수정: Directory API를 사용하여 사용자 이름, POSIX 계정 정보 같은 사용자 속성을 업데이트합니다.
- OS 로그인을 사용하는 Linux 그룹 사용: OS 로그인을 사용한 Linux 그룹을 사용하여 VM 내의 사용자 권한을 관리합니다.
- 직원 ID 제휴(미리보기)로 OS 로그인 사용: 조직에서 외부 ID 공급업체(IdP)를 사용할 때 OS 로그인이 사용 설정된 VM에 연결합니다.
시작하기 전에
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
enable-oslogin=true
는 모든 새 프로젝트의 프로젝트 메타데이터에 포함됩니다.- 인스턴스 또는 프로젝트 메타데이터에서
enable-oslogin
을false
로 설정하는 요청은 신규 및 기존 VM과 프로젝트에서 거부됩니다. - Cloud Data Fusion 버전 6.1.4 이하
- Cloud Composer 1
- 1.23.5 이전 버전을 실행하는 Google Kubernetes Engine(GKE) 공개 클러스터
- 1.20.5 이전의 노드 풀 버전을 실행하는 GKE 비공개 클러스터
- 서버리스 Dataproc
- Windows Server 및 SQL Server VM
- Fedora CoreOS VM. 이러한 이미지를 사용하여 만든 VM에 대한 인스턴스 액세스를 관리하려면 Fedora CoreOS 이그니션 시스템을 사용하세요.
- Google Cloud Console에서 조직 정책 페이지로 이동합니다.
- 정책 목록에서 OS 로그인 필요를 클릭하여 OS 로그인 제약조건을 확인합니다.
- 수정을 클릭하여 기존 OS 로그인 제약조건을 수정합니다.
- 수정 페이지에서 맞춤설정을 선택합니다.
- 이 제약조건을 시행하려면 사용을 선택합니다.
- 저장을 클릭하여 제약조건 설정을 적용합니다.
조직 ID를 찾습니다.
gcloud organizations list
조직의 제약조건을 설정합니다.
organization-id
를 조직 ID로 바꿉니다.gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --organization=organization-id
- Google Cloud 콘솔에서 프로젝트 및 조직 선택 페이지로 이동합니다.
- 조직 드롭다운 메뉴에서 소속 조직을 선택합니다.
- 소속된 모든 조직을 보려면 전체를 클릭합니다.
- 조직 이름을 클릭합니다.
- 추가를 클릭해 새 역할을 사용자에게 추가합니다.
- 인스턴스 액세스 권한을 구성할 사용자의 사용자 이름을 지정합니다.
- 역할 선택을 클릭해 사용자에게 부여할 역할을 지정합니다.
- Compute Engine 역할 목록에서 Compute OS 로그인 외부 사용자 역할을 선택합니다.
- 추가를 클릭해 선택한 역할을 사용자에게 부여하겠다는 의사를 확인합니다.
- 아직 수행 전이라면 프로젝트 또는 조직 수준에서 사용자에게 다른 OS 로그인 인스턴스 액세스 역할을 부여합니다.
- OS 로그인 API로 생성된 사용자 이름에 도메인 서픽스를 포함할지 여부를 선택합니다. 예를 들어
example.com
도메인에서 도메인 서픽스를 포함하는 설정을 선택하지 않으면 사용자user@example.com
의 사용자 이름은user
입니다. - 조직의 구성원이 OS 로그인 API를 사용하여 SSH 키를 관리할 수 있는지 결정합니다.
- 조직 외부의 사용자에게 VM 액세스를 제한하거나 허용합니다.
- 인스턴스 로그인 설정 수정
- 사용자를 관리자로 지정
- 계정 이름, 이메일 같은 사용자 속성 수정
- 사용자의 SSH 키 추가 및 삭제
- POSIX 계정 정보 수정
- 사용자가 인스턴스에서 연결하는 사용자 이름 변경
USER_KEY
: 사용자의 기본 이메일 주소, 별칭 이메일 주소 또는 순 사용자 ID입니다.USERNAME
: Compute Engine에서 사용자의 VM에 추가하는 사용자 이름입니다. 이 값은 조직 내에서 고유해야 하며 물결표('~')로 끝나거나 마침표('.')를 포함해서는 안 됩니다.UID
: 이 사용자의 VM 사용자 ID입니다. 이 속성 값은1001
~60000
또는65535
~2147483647
이어야 합니다. 컨테이너 최적화 OS에 액세스하려면UID
값이65536
~214748646
이어야 합니다.UID
는 조직 내에서 고유해야 합니다.GID
: 사용자가 속한 VM의 그룹 ID입니다.USER_HOME_PATH
: (선택사항) 사용자에 대한 VM의 홈 디렉터리입니다. 예를 들면/home/example_username
입니다.SHELL_PATH
: (선택사항) 사용자가 인스턴스에 연결한 후의 기본 셸 경로입니다. 예를 들면/bin/bash
또는/bin/sh
입니다.KEY_VALUE
: 공개 SSH 키 값입니다.EXPIRATION_TIME
: (선택사항) 에포크 후 키의 만료 시간(마이크로초)입니다(1 초 = 106 마이크로초).- 직원 ID 풀을 만듭니다.
google.posix_username
속성 매핑을 설정합니다.다음을 수행하여 직원 ID 제휴와 함께 OS 로그인을 사용하도록 VM을 구성합니다.
VM에서 다음 명령어를 실행하여 VM에 OpenSSH 7.4 이상이 설치되었는지 확인합니다.
ssh -V
게스트 환경을 업데이트합니다.
OS 로그인과 함께 직원 ID 제휴를 사용하려면 연결하려는 VM에 OpenSSH 버전 7.4 이상이 있어야 합니다.
직원 ID 제휴를 사용하는 조직의 사용자는 VM의 직렬 포트에 액세스할 수 없습니다.
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
다음 명령어를 실행합니다.
gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME
다음 명령어를 실행하여 VM에 연결합니다.
PROJECT_ID
: VM이 포함된 프로젝트의 IDZONE
: VM이 있는 영역의 이름VM_NAME
: VM의 이름
Google Cloud CLI에 기본 속성을 설정한 경우 이 명령어에서
--project
플래그와--zone
플래그를 생략할 수 있습니다. 예를 들면 다음과 같습니다.gcloud compute ssh VM_NAME
-
아직 설치하지 않았다면 워크스테이션에 IAP 데스크톱을 설치합니다.
-
IAP 데스크톱을 엽니다. 프로젝트 추가 창이 열립니다.
-
메시지가 표시되면 직원 ID 제휴로 로그인합니다.
-
프로젝트 추가 창에서 연결하려는 VM이 포함된 프로젝트의 프로젝트 ID 또는 이름을 입력합니다.
-
프로젝트 탐색기 창에서 VM 이름을 다시 마우스 오른쪽 버튼으로 클릭하고 연결을 선택하여 VM에 연결합니다.
- SSH 키가 없는 경우 SSH 키를 만듭니다.
users.projects.locations.signSshPublicKey
메서드를 사용하여 공개 SSH 키에 서명합니다.POST https://oslogin.googleapis.com/v1beta/users/USER/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey { "ssh_public_key": "PUBLIC_KEY" }
다음을 바꿉니다.
USER
: 직원 풀의 단일 ID를 다음 형식으로 지정합니다.principal:%2F%2Fiam.googleapis.com%2Flocations%2Fglobal%2FworkforcePools%2POOL_ID%2Fsubject%2FSUBJECT_ATTRIBUTE_VALUE
다음을 바꿉니다.
POOL_ID
: 사용자가 속한 직원 풀입니다.SUBJECT_ATTRIBUTE_VALUE
: 사용자의google.posix_username
속성 매핑 값입니다.
PROJECT_ID
: 연결할 VM이 포함된 프로젝트의 프로젝트 ID입니다.LOCATION
: 연결할 VM이 있는 영역입니다.PUBLIC_KEY
: SSH 공개 키 파일의 콘텐츠입니다.
user.signSshPublicKey
메서드의 출력에서 SSH 인증서를 복사하고 콘텐츠를 새 파일에 저장합니다.다음 명령어를 실행하여 SSH 인증서 파일에 대한 권한을 설정합니다.
sudo chmod 600 FILE_NAME
FILE_NAME
을 파일 이름으로 바꿉니다.다음 명령어를 사용하여 VM에 연결합니다.
ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
다음을 바꿉니다.
PATH_TO_PRIVATE_KEY
: 비공개 SSH 키 파일 경로입니다.PATH_TO_SSH_CERTIFICATE
: SSH 인증서 파일 경로입니다.USERNAME
: 사용자의google.posix_username
속성 매핑 값입니다.EXTERNAL_IP
: VM의 외부 IP 주소입니다.
- OS 로그인을 설정하는 방법 알아보기
- 2단계 인증을 사용하여 OS 로그인을 설정 방법 알아보기
- OS 로그인 기능 개요 읽어보기
- OS 로그인 문제 해결
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
OS 로그인 조직 정책
조직에서 OS 로그인 제약조건을 설정하여 모든 신규 프로젝트와 새 프로젝트 내에서 생성된 VM 인스턴스에 OS 로그인을 사용 설정할 수 있습니다.
이 제약조건이 설정되면 다음 조건이 적용됩니다.
제한사항
OS 로그인은 다음 제품, 기능, VM에서 지원되지 않습니다.Cloud Data Fusion, Cloud Composer, GKE 해결 방법
Cloud Data Fusion, Cloud Composer, GKE를 사용하는 조직에서 OS 로그인을 사용하려면 조직 수준에서 OS 로그인 제약조건을 사용 설정한 후 프로젝트 또는 해당 프로젝트의 폴더에서 제약 조건을 선택적으로 사용 중지할 수 있습니다.
조직 정책을 편집하는 방법에 대한 자세한 내용은 정책 만들기 및 수정을 참조하세요.
조직 정책 사용 설정
OS 로그인 정책을 사용 설정하려면 Google Cloud CLI를 사용하여 특정 프로젝트 및 폴더에 OS 로그인 제약조건을 설정할 수 있습니다. 또한 Google Cloud Console 또는 Google Cloud CLI를 사용하여 전체 조직에 OS 로그인 제약조건을 설정할 수도 있습니다.
Console
Console에서 OS 로그인 조직 정책을 설정하려면 다음 단계를 완료하세요.
gcloud
OS 로그인 조직 정책을 설정하려면
gcloud beta resource-manager org-policies enable-enforce
명령어를 사용합니다.--folder
또는--project
플래그와 폴더 ID, 프로젝트 ID를 각각 사용하여 OS 로그인 조직 정책을 폴더 또는 프로젝트에 적용할 수도 있습니다.폴더에 다음 명령어를 실행합니다.
gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --folder=folder-id
프로젝트의 경우 다음 명령어를 실행합니다.
gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --project=project-id
다음을 바꿉니다.
조직 외부 사용자에게 인스턴스 액세스 권한 부여
기본적으로 조직 외부 사용자는 조직 내 인스턴스에 SSH 키를 설정하거나 조직 내 인스턴스 접근 권한을 부여받을 수 없습니다. 그러나 다른 조직에 속한 사용자 또는 일반 사용자 Google
gmail.com
계정이 있는 사용자에게 인스턴스 액세스 권한을 부여해야 하는 경우가 있을 수 있습니다.roles/compute.osLoginExternalUser
IAM 역할은 외부 Google 계정이 POSIX 계정 정보를 구성하도록 허용하여 다른 OS 로그인 역할과 상호 작용하도록 합니다.roles/compute.osLoginExternalUser
와 필요한 다른 OS 로그인 인스턴스 액세스 역할을 조직 외부의 사용자에게 부여하려면 다음 단계를 완료하세요.이제 사용자가 OS 로그인이 사용 설정된 프로젝트의 인스턴스에 연결할 수 있습니다.
OS 로그인 API 관리
조직 수준에서 Google Workspace 관리자 제어를 설정하여 OS 로그인 API 액세스 권한을 제한할 수 있습니다. Google Workspace 관리자 제어를 구성하거나 구성 옵션을 보려면 조직에서 Google Cloud를 사용할 사용자 지정하기를 참조하세요. Google Workspace 관리자는 OS Login API의 특정 기능도 사용 또는 사용 중지할 수 있습니다. 여기에는 다음 옵션이 포함됩니다.
OS 로그인 API 설정 사용 또는 사용 중지에 대한 자세한 내용은 Google Cloud Platform 설정 선택을 참조하세요.
OS 로그인 이벤트 감사
Google Workspace 관리자는 Google Workspace Admin SDK를 사용하여 OS Login API로 수행하는 작업을 감사할 수 있습니다. 이벤트를 검토하면 사용자가 언제 SSH 키를 추가, 삭제 또는 업데이트하거나 POSIX 계정 정보를 삭제하는지 추적할 수 있습니다.
applicationName=gcp
로Activities.list()
를 호출하여 Google Workspace Admin SDK에서 OS Login API 감사 활동 이벤트를 검색할 수 있습니다. 자세한 내용은 Google Workspace Admin SDK Reports API 문서의 Google Cloud 활동 이벤트를 참조하세요.Directory API를 이용해 사용자 계정 수정
인스턴스에 연결할 때 OS 로그인에서는 Cloud ID 또는 Google Workspace 사용자 설정을 사용합니다. 조직 관리자는 Directory API를 사용하여 Google Workspace 또는 Cloud ID 사용자 계정에 대해 다음과 같은 작업을 완료할 수 있습니다.
다음 예시에서는 Directory API를 사용하여 사용자 계정을 수정하거나 삭제하는 방법을 보여줍니다. 수정할 수 있는 계정 속성에 대한 자세한 내용은 Directory API 참조를 확인하세요.
계정 속성 수정
사용자의 POSIX 계정 정보를 수정하거나 사용자의 SSH 키를 관리하려면
directory.users.update
메서드에PUT
요청을 실행하고 사용자 계정에서 변경할 속성을 한 개 이상 지정합니다.사용자의
posixAccounts
속성을 수정할 경우 요청에 현재 또는 새로운username
,uid
,gid
값을 지정해야 합니다.사용자의
sshPublicKeys
속성을 수정할 경우 요청에key
값을 지정해야 합니다.다음은
PUT
요청의 예시입니다.PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY { "posixAccounts": [ { "username": "USERNAME", "uid": "UID", "gid": "GID", "homeDirectory": "USER_HOME_PATH", "shell": "SHELL_PATH" } ], "sshPublicKeys": [ { "key": "KEY_VALUE", "expirationTimeUsec": EXPIRATION_TIME } ], }
다음을 바꿉니다.
계정 속성 삭제
사용자에 대해
posixAccounts
및sshPublicKeys
데이터를 지우려면directory.users.update
메서드에 대해PUT
요청을 수행하고posixAccounts
및sshPublicKeys
필드를null
로 설정합니다.PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY { "posixAccounts": null, "sshPublicKeys": null }
USER_KEY
를 사용자의 기본 이메일 주소, 별칭 이메일 주소 또는 순 사용자 ID로 바꿉니다.OS 로그인을 사용하는 Linux 그룹 사용
조직 관리자는 Cloud Identity Groups API로 POSIX 그룹을 만들고 관리하여 OS 로그인 사용자를 위한 보조 Linux 그룹을 구성할 수 있습니다. OS 로그인은 POSIX 그룹을 조직 VM의 보조 Linux 그룹과 연결하므로 사용자가 VM에서 갖는 사용자의 권한을 관리할 수 있습니다.
Linux 그룹의 사용자 멤버십 관리
POSIX 그룹을 만들려면 POSIX 그룹 만들기 및 업데이트를 참조하세요.
그룹에 사용자를 추가하려면 그룹에 사용자 추가 또는 초대를 참조하세요.
멤버십 업데이트는 10분 이내에 적용됩니다. 그룹 변경사항은 새로 생성된 모든 VM에 반영됩니다. POSIX 그룹 업데이트는 실행 중인 모든 VM에 전파되는 데 최대 6시간이 걸릴 수 있습니다. 사용자는 그룹 변경사항을 관찰하기 위해 로그아웃하거나
newgrp
명령어를 사용해야 할 수 있습니다.OS 로그인을 사용하는 Linux 그룹의 비율 한도
OS 로그인을 사용하는 Linux 그룹은
oslogin.googleapis.com/metadata_server_groups_requests
할당량을 사용합니다. 기본적으로 할당량 한도는 특정 리전의 프로젝트별로 1분당 요청 60개입니다.더 높은 비율 제한이 필요하다면 Google Cloud 콘솔의 할당량 페이지에서 추가 할당량을 요청할 수 있습니다.
OS 로그인과 함께 직원 ID 제휴 사용
직원 ID 제휴를 사용하는 조직은 OS 로그인을 사용하여 VM에 대한 액세스를 관리할 수 있습니다. 조직에 직원 ID 제휴가 사용 설정된 경우 OS 로그인은 키 기반 인증 대신 인증서 기반 인증을 사용하여 사용자 ID를 확인합니다.
시작하기 전에
제한사항
OS 로그인 및 직원 ID 제휴를 사용하는 VM에 연결
Google Cloud 콘솔, gcloud CLI 또는 기타 SSH 클라이언트를 사용하여 직원 ID 제휴와 함께 OS 로그인을 사용하는 VM에 연결합니다.
콘솔
SSH-in-browser를 사용하여 직원 ID 제휴와 함께 OS 로그인을 사용하는 VM에 연결하면 Compute Engine은 연결을 시도할 때 사용자 대신 SSH 인증서를 구성합니다.
VM에 연결하려면 다음을 수행합니다.
gcloud
gcloud CLI을 사용하여 직원 ID 제휴와 함께 OS 로그인을 사용하는 VM에 연결하면 Compute Engine은 연결을 시도할 때 사용자 대신 SSH 인증서를 구성합니다.
gcloud compute ssh
명령어를 실행하여 SSH를 사용하는 VM에 연결합니다.IAP 데스크톱
IAP 데스크톱을 사용하여 직원 ID 제휴와 함께 OS 로그인을 사용하는 VM에 연결하면 Compute Engine은 연결을 시도할 때 사용자 대신 SSH 인증서를 구성합니다.
IAP 데스크톱을 사용하여 VM에 연결하려면 다음을 수행하세요.
SSH 클라이언트
SSH 클라이언트를 사용하여 직원 ID 제휴와 함께 OS 로그인을 사용하는 VM에 연결하려면 다음을 수행합니다.
다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-11-22(UTC)
-