이 페이지에서는 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 https://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 "" \
"https://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 "https://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:example@example.com" ] } ] }
IAM 정책 설정
REST API를 사용하여 엔드포인트에 IAM 정책을 설정할 수 있습니다.
이렇게 하려면 엔드포인트나 프로젝트에 대한 endpoints.setIamPolicy
권한이 있어야 합니다.
Vertex AI 관리자 역할(roles/aiplatform.admin
)에서 이 권한을 부여합니다.
REST
리소스에 IAM 정책을 설정하려면 setIamPolicy
메서드를 사용하는 POST
요청을 전송합니다.
IAM 정책을 설정하면 기존 정책이 재정의되며 변경사항은 추가되지 않습니다. 리소스의 기존 정책을 수정하려면 getIamPolicy
메서드를 사용하여 기존 정책을 가져온 후 수정합니다. setIamPolicy
요청에 수정된 정책과 함께 etag
를 포함합니다.
409
오류 코드가 수신되면 동시 setIamPolicy
요청이 이미 정책을 업데이트한 것입니다.
getIamPolicy
메서드를 사용하여 정책의 업데이트된 etag
를 가져온 후 새 etag
로 setIamPolicy
요청을 다시 시도합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION_ID: 엔드포인트가 있는 리전입니다(예:
us-central1
). - PROJECT_ID: Google Cloud 프로젝트 ID
- ENDPOINT_ID: 엔드포인트의 ID
- ROLE: 부여할 권한이 포함된 IAM 역할입니다(예:
roles/aiplatform.user
). - PRINCIPAL: 역할의 권한이 부여되는 주 구성원입니다(예:
user:myuser@example.com
). - ETAG: 동시에 발생한 여러 정책 업데이트가 서로를 덮어쓰지 않도록 사용하는 문자열 값입니다. 이 값은
getIamPolicy
응답의 일부로 반환됩니다.
HTTP 메서드 및 URL:
POST https://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 \
"https://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 "https://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:example@example.com" ] } ] }
엔드포인트에 대한 사용자 IAM 권한 확인
현재 인증된 사용자에게 엔드포인트에 대한 특정 IAM 권한이 있는지 여부를 확인할 수 있습니다.
REST
사용자에게 리소스에 대한 특정 IAM 권한이 있는지 여부를 확인하려면 testIamPermissions
메서드를 사용하는 POST
요청을 전송합니다.
다음 예시를 사용하면 현재 인증된 사용자에게 엔드포인트에 대한 IAM 권한 집합이 있는지 여부를 테스트할 수 있습니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION_ID: 엔드포인트가 있는 리전입니다(예:
us-central1
). - PROJECT_ID: Google Cloud 프로젝트 ID
- ENDPOINT_ID: 엔드포인트의 ID
HTTP 메서드 및 URL:
POST https://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 \
"https://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 "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }