Vertex AI 엔드포인트에 대한 액세스 권한 제어

이 페이지에서는 IAM 정책을 설정하여 Vertex AI 엔드포인트에 대한 액세스 권한을 제어하는 방법을 설명합니다. 이 문서에서는 IAM을 사용한 Vertex AI 액세스 제어액세스 관리와 관련된 개념의 설명대로 개발자가 정책, 역할, 권한, 주 구성원과 같은 IAM 개념에 이미 익숙하다고 가정합니다.

IAM 정책에는 어떤 주 구성원이 어떤 IAM 역할과 연결되는지 정의하는 하나 이상의 역할 바인딩이 포함됩니다. 역할은 주 구성원에게 부여하는 권한 모음입니다. Vertex AI는 정책에 사용할 수 있는 사전 정의된 역할을 제공합니다. 또는 고유한 커스텀 역할을 만들 수 있습니다.

IAM 정책 가져오기

REST API를 사용하여 Vertex AI 엔드포인트에서 현재 IAM 정책을 볼 수 있습니다. 이렇게 하려면 엔드포인트나 프로젝트에 대한 endpoints.getIamPolicy 권한이 있어야 합니다. Vertex AI 관리자 역할(roles/aiplatform.admin)에서 이 권한을 부여합니다.

REST

리소스에서 IAM 정책을 가져오려면 getIamPolicy 메서드를 사용하는 POST 요청을 전송합니다.

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

  • LOCATION_ID: 엔드포인트가 있는 리전입니다(예: us-central1).
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • ENDPOINT_ID: 엔드포인트의 ID

HTTP 메서드 및 URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy

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

curl

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

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy"

PowerShell

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

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

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy" | Select-Object -Expand Content

현재 IAM 정책이 포함된 JSON 응답을 받아야 합니다.

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:[email protected]"
      ]
    }
  ]
}

IAM 정책 설정

REST API를 사용하여 엔드포인트에 IAM 정책을 설정할 수 있습니다. 이렇게 하려면 엔드포인트나 프로젝트에 대한 endpoints.setIamPolicy 권한이 있어야 합니다. Vertex AI 관리자 역할(roles/aiplatform.admin)에서 이 권한을 부여합니다.

REST

리소스에 IAM 정책을 설정하려면 setIamPolicy 메서드를 사용하는 POST 요청을 전송합니다.

IAM 정책을 설정하면 기존 정책이 재정의되며 변경사항은 추가되지 않습니다. 리소스의 기존 정책을 수정하려면 getIamPolicy 메서드를 사용하여 기존 정책을 가져온 후 수정합니다. setIamPolicy 요청에 수정된 정책과 함께 etag를 포함합니다.

409 오류 코드가 수신되면 동시 setIamPolicy 요청이 이미 정책을 업데이트한 것입니다. getIamPolicy 메서드를 사용하여 정책의 업데이트된 etag를 가져온 후 새 etagsetIamPolicy 요청을 다시 시도합니다.

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

  • LOCATION_ID: 엔드포인트가 있는 리전입니다(예: us-central1).
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • ENDPOINT_ID: 엔드포인트의 ID
  • ROLE: 부여할 권한이 포함된 IAM 역할입니다(예: roles/aiplatform.user).
  • PRINCIPAL: 역할의 권한이 부여되는 주 구성원입니다(예: user:[email protected]).
  • ETAG: 동시에 발생한 여러 정책 업데이트가 서로를 덮어쓰지 않도록 사용하는 문자열 값입니다. 이 값은 getIamPolicy 응답의 일부로 반환됩니다.

HTTP 메서드 및 URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy

JSON 요청 본문:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "PRINCIPAL"
        ]
      },
      ...
    ],
    "etag": "ETAG"
  }
}

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

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 \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID: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 "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy" | Select-Object -Expand Content

현재 IAM 정책이 포함된 JSON 응답을 받아야 합니다.

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:[email protected]"
      ]
    }
  ]
}

엔드포인트에 대한 사용자 IAM 권한 확인

현재 인증된 사용자에게 엔드포인트에 대한 특정 IAM 권한이 있는지 여부를 확인할 수 있습니다.

REST

사용자에게 리소스에 대한 특정 IAM 권한이 있는지 여부를 확인하려면 testIamPermissions 메서드를 사용하는 POST 요청을 전송합니다. 다음 예시를 사용하면 현재 인증된 사용자에게 엔드포인트에 대한 IAM 권한 집합이 있는지 여부를 테스트할 수 있습니다.

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

  • LOCATION_ID: 엔드포인트가 있는 리전입니다(예: us-central1).
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • ENDPOINT_ID: 엔드포인트의 ID

HTTP 메서드 및 URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d

JSON 요청 본문:

{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

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

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 \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d"

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 "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 수신됩니다. 응답에는 현재 인증된 사용자가 사용할 수 있는 요청 JSON 본문의 권한만 포함됩니다.
{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}