사용자 관리 노트북 인스턴스에 대한 액세스 관리

이 가이드에서는 특정 Vertex AI Workbench 사용자 관리 노트북 인스턴스에 대한 액세스 권한을 부여하는 방법을 설명합니다. Vertex AI 리소스에 대한 액세스를 관리하려면 액세스 제어에 대한 Vertex AI 페이지를 참조하세요.

인스턴스에서 Identity and Access Management(IAM) 정책을 설정하여 사용자 관리 노트북 인스턴스에 대한 액세스 권한을 부여합니다. 이 정책은 사용자 또는 서비스 계정 같은 하나 이상의 주 구성원을 하나 이상의 역할에 바인딩합니다. 각 역할에는 주 구성원이 인스턴스와 상호작용할 수 있는 권한 목록이 포함됩니다.

최소 권한의 원칙에 따라 프로젝트, 폴더, 조직과 같은 상위 리소스 대신 인스턴스에 액세스 권한을 부여할 수 있습니다.

상위 리소스(예: 프로젝트)에 대한 액세스 권한을 부여하면 모든 하위 리소스(예: 해당 프로젝트의 모든 인스턴스)에 대한 액세스 권한이 암시적으로 부여됩니다. 리소스에 대한 액세스를 제한하려면 가급적 프로젝트 수준 이상이 아니라 하위 수준 리소스에 IAM 정책을 설정합니다.

예를 들어 Google Cloud 프로젝트에 액세스 권한을 부여하는 등 Vertex AI Workbench와 관련이 없는 리소스에 대한 액세스 권한을 부여, 변경, 취소하는 방법에 대한 일반적인 정보는 프로젝트, 폴더, 조직에 대한 액세스 관리 IAM 문서를 참조하세요

액세스 제한사항

주 구성원에게 할당하는 역할에 따라 인스턴스에 대한 액세스 권한에 광범위한 기능이 포함될 수 있습니다. 예를 들어 인스턴스 상태를 시작, 중지, 업그레이드, 모니터링할 수 있는 기능을 주 구성원에 부여할 수 있습니다. 사용 가능한 IAM 권한의 전체 목록은 사전 정의된 사용자 관리 노트북 IAM 역할을 참조하세요.

하지만 주 구성원에게 사용자 관리 노트북 인스턴스에 대한 전체 액세스 권한을 부여해도 인스턴스의 JupyterLab 인터페이스를 사용할 수 있는 권한은 부여되지 않습니다. JupyterLab 인터페이스에 대한 액세스 권한을 부여하려면 사용자 관리 노트북 인스턴스의 JupyterLab 인터페이스에 대한 액세스 관리를 참조하세요.

사용자 관리 노트북 인스턴스에 대한 액세스 권한 부여

사용자에게 특정 사용자 관리 노트북 인스턴스에 액세스할 수 있는 권한을 부여하려면 인스턴스에 IAM 정책을 설정합니다.

gcloud

사용자 관리 노트북 인스턴스의 주 구성원에 역할을 부여하려면 get-iam-policy 명령어를 사용해 현재 정책을 가져와 현재 정책의 액세스 권한을 수정한 후 set-iam-policy 명령어를 사용하여 인스턴스의 정책을 업데이트합니다.

현재 정책 가져오기

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • INSTANCE_NAME: 사용자 관리 노트북 인스턴스 이름
  • PROJECT_ID: Google Cloud 프로젝트 ID
  • ZONE: 인스턴스가 있는 영역

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE

Windows(PowerShell)

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE

Windows(cmd.exe)

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE
인스턴스의 IAM 정책 텍스트가 응답으로 반환됩니다. 다음 예시를 참조하세요.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

정책 수정

  1. 텍스트 편집기로 정책을 수정하여 주 구성원과 연결된 역할을 추가 또는 삭제합니다. 예를 들어 eve@example.comnotebooks.admin 역할을 부여하려면 "bindings" 섹션의 정책에 다음과 같은 새로운 바인딩을 추가합니다.

    {
      "role": "roles/notebooks.admin",
      "members": [
        "user:eve@example.com"
      ]
    }
    

    새 바인딩을 추가하면 정책이 다음과 같이 표시됩니다.

    {
      "bindings": [
        {
          "role": "roles/notebooks.viewer",
          "members": [
            "user:email@example.com"
          ]
        },
        {
          "role": "roles/notebooks.admin",
          "members": [
            "user:eve@example.com"
          ]
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }
    
  2. 업데이트된 정책을 request.json 파일에 저장합니다.

인스턴스의 정책 업데이트

요청 본문에서 "policy" 섹션 내에 중첩된 이전 단계의 업데이트된 IAM 정책을 제공합니다.

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • INSTANCE_NAME: 사용자 관리 노트북 인스턴스 이름
  • PROJECT_ID: Google Cloud 프로젝트 ID
  • ZONE: 인스턴스가 있는 영역

다음 콘텐츠를 request.json 파일에 저장합니다.

{
  "policy": {
    "bindings": [
      {
        "role": "roles/notebooks.viewer",
        "members": [
          "user:email@example.com"
        ]
      },
      {
        "role": "roles/notebooks.admin",
        "members": [
          "user:eve@example.com"
        ]
      }
    ],
    "etag": "BwWWja0YfJA=",
    "version": 3
  }
}

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

Windows(PowerShell)

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

Windows(cmd.exe)

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

JupyterLab 인터페이스에 대한 액세스 권한 부여

주 구성원에게 사용자 관리 노트북 인스턴스에 대한 액세스 권한을 부여해도 인스턴스의 JupyterLab 인터페이스를 사용할 수 있는 권한은 부여되지 않습니다. JupyterLab 인터페이스에 대한 액세스 권한을 부여하려면 사용자 관리 노트북 인스턴스의 JupyterLab 인터페이스에 대한 액세스 관리를 참조하세요.

API

사용자 관리 노트북 인스턴스의 주 구성원에 역할을 부여하려면 getIamPolicy 메서드를 사용해 현재 정책을 가져와 현재 정책의 액세스 권한을 수정한 후 setIamPolicy 메서드를 사용하여 인스턴스의 정책을 업데이트합니다.

현재 정책 가져오기

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • INSTANCE_NAME: 사용자 관리 노트북 인스턴스 이름

HTTP 메서드 및 URL:

GET https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

다음 명령어를 실행합니다.

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy"

PowerShell

다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy" | Select-Object -Expand Content
인스턴스의 IAM 정책 텍스트가 응답으로 반환됩니다. 다음 예시를 참조하세요.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

정책 수정

텍스트 편집기로 정책을 수정하여 주 구성원과 연결된 역할을 추가 또는 삭제합니다. 예를 들어 eve@example.com에 notebooks.admin 역할을 부여하려면 다음과 같은 새 바인딩을 "bindings" 섹션의 정책에 추가합니다.

{
  "role": "roles/notebooks.admin",
  "members": [
    "user:eve@example.com"
  ]
}

새 바인딩을 추가하면 정책이 다음과 같이 표시됩니다.

{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    },
    {
      "role": "roles/notebooks.admin",
      "members": [
        "user:eve@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

인스턴스의 정책 업데이트

요청 본문에서 "policy" 섹션 내에 중첩된 이전 단계의 업데이트된 IAM 정책을 제공합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • INSTANCE_NAME: 사용자 관리 노트북 인스턴스 이름

HTTP 메서드 및 URL:

POST https://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy

JSON 요청 본문:

{
  "policy": {
    "bindings": [
      {
        "role": "roles/notebooks.viewer",
        "members": [
          "user:email@example.com"
        ]
      },
      {
        "role": "roles/notebooks.admin",
        "members": [
          "user:eve@example.com"
        ]
      }
    ],
    "etag": "BwWWja0YfJA=",
    "version": 3
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy" | Select-Object -Expand Content

성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.

JupyterLab 인터페이스에 대한 액세스 권한 부여

주 구성원에게 사용자 관리 노트북 인스턴스에 대한 액세스 권한을 부여해도 인스턴스의 JupyterLab 인터페이스를 사용할 수 있는 권한은 부여되지 않습니다. JupyterLab 인터페이스에 대한 액세스 권한을 부여하려면 사용자 관리 노트북 인스턴스의 JupyterLab 인터페이스에 대한 액세스 관리를 참조하세요.

다음 단계