서비스 계정을 사용하여 타사 애플리케이션의 VMware Cloud Director 액세스를 자동화할 수 있습니다.

공유

VMware Cloud Director 10.4.1부터는 사용자가 볼 수 있는 서비스 계정 정보를 제한하려는 경우 특정 역할에 제한된 서비스 계정 보기 권한만 부여하면 됩니다. 제한된 서비스 계정 보기 권한이 있는 사용자가 서비스 계정에 대해 GET 요청을 하면 응답에서 서비스 계정의 softwareId, softwareVersion, uri, statusnull로 표시됩니다.

구현

VMware Cloud Director에 대한 자동화된 액세스를 제공하기 위해 서비스 계정은 API 토큰을 사용합니다. 서비스 계정은 API 기반 액세스 전용입니다. 서비스 계정에 액세스 권한을 부여하면 인증된 클라이언트 애플리케이션은 즉시 사용하기 위한 해당 API 토큰(OAuth 새로 고침 토큰임) 및 첫 번째 VMware Cloud Director 세션을 나타내는 액세스 토큰을 수신합니다. 애플리케이션은 VMware Cloud Director로 인증하는 데 API 토큰이 필요합니다. 액세스 토큰은 애플리케이션이 서비스 계정을 사용하여 API 요청을 수행하는 데 사용하는 VMware Cloud Director 세션 토큰(JWT 토큰)입니다. 애플리케이션에 대한 서비스 계정은 API 토큰을 사용하므로 VMware Cloud Director의 사용자 API 토큰과 동일한 제한 사항이 있습니다.

서비스 계정에는 "서비스 계정 권한 부여 요청"을 사용하여 액세스 권한이 부여됩니다. 이렇게 하면 토큰을 사용해야 하는 애플리케이션만 토큰에 대한 유일한 액세스 권한을 가지며 토큰을 사용할 수 있습니다. 다른 행위자는 토큰에 액세스할 수 없습니다. 관리자로 서비스 계정에 대한 액세스를 관리합니다. 그러나 관리자도 액세스 권한을 부여하는 실제 토큰에 대한 액세스 권한이 없습니다. VMware Cloud Director는 서비스 계정에만 토큰을 제공합니다. 이를 위해 VMware Cloud Director는 잘 알려진 표준에 의존합니다. 사용자 및 토큰을 부여하는 애플리케이션이 부여 및 토큰 전송 중에 동기화디도록 하기 위해, 애플리케이션의 사용자 코드를 알고 있는 경우에만 API 토큰 부여 프로세스를 시작할 수 있습니다.

사용자 API 토큰과 달리 서비스 계정에 부여된 API 토큰은 RFC 6749 섹션 6에 따라 모든 용도에서 순환합니다. 사용되지 않은 서비스 계정 API 토큰은 해지하지 않는 한 만료되지 않습니다.

서비스 계정에는 하나의 역할만 있을 수 있습니다. OAuth 준수 API에서 역할은 범위 필드를 통해 역할 이름과 함께 URL 인코딩 URN(Uniform Resource Name)으로 전달됩니다. URN 형식은 urn:vcloud:role:[roleName]입니다. URN 인코딩을 설명하는 RFC 8141을 참조하십시오.

참고: 디바이스 끝점이 인증되지 않았습니다. 로드 밸런서에서 특수한 임계치 조절 규칙을 구성하는 것이 좋습니다.
표 1. 서비스 계정 상태
상태 설명
만든 날짜 계정은 생성 후 초기 상태에 있습니다.
요청됨 요청자가 디바이스 권한 부여 요청을 사용하여 시작한 액세스에 대한 하나 이상의 미결 요청이 있습니다.
부여됨 관리자가 미결 요청을 승인했으며 서비스 계정 폴링 및 API 토큰 가져오기를 기다리고 있습니다.
활성 서비스 계정이 API 토큰을 가져왔으며 토큰을 사용하여 VMware Cloud Director에 액세스할 수 있습니다.

제한 사항

서비스 계정 사용은 타사 애플리케이션에 목적이 있으므로 서비스 계정에는 몇 가지 제한 사항이 있습니다.

서비스 계정을 사용하는 경우 애플리케이션은 특정 작업을 수행할 수 없습니다.
  • 사용자 관리 작업 수행
  • API 토큰 생성
  • 다른 서비스 계정 관리
서비스 계정을 사용하여 VMware Cloud Director에 액세스하는 경우 애플리케이션은 다음 리소스에 대해 보기 권한만 갖습니다.
  • 사용자
  • 그룹
  • 역할
  • 글로벌 역할
  • 권한 번들
서비스 계정을 사용하여 VMware Cloud Director에 액세스하는 애플리케이션에는 다음 권한이 없습니다.
  • 토큰: 관리
  • 토큰: 모두 관리

다중 사이트

VMware Cloud Director 10.4.1부터 서비스 계정은 다중 사이트 기능을 사용하여 지리적으로 분산된 여러 VMware Cloud Director 설치 또는 서버 그룹과 해당 조직을 단일 엔티티로 관리하고 모니터링할 수 있습니다. 자세한 내용은 다중 사이트 배포 구성 및 관리를 참조하십시오. 서비스 계정이 인증된 조직이 아닌 다른 조직에 요청을 수행하는 경우에는 연결된 조직에 서비스 계정이 존재하고 이름과 소프트웨어 ID가 동일한지 확인합니다. 또한 요청을 이행해야 하는 조직의 이름을 지정하는 X-VMWARE-VCLOUD-AUTH-CONTEXT 헤더를 포함해야 합니다. "VMware Cloud Director API 프로그래밍 가이드" 에서 다중 사이트 배포를 구성하고 관리하는 방법에 대한 정보를 참조하십시오.

서비스 계정 생성

Service Provider Admin Portal을 사용하여 VMware Cloud Director에 자동으로 액세스하기 위한 계정을 생성할 수 있습니다.

프로시저

  1. 위쪽 탐색 모음에서 관리를 선택합니다.
  2. 왼쪽 패널의 제공자 액세스 제어 아래에서 서비스 계정을 선택합니다.
  3. 새로 만들기를 클릭합니다.
  4. 서비스 계정의 이름을 입력합니다.
  5. 역할 할당 드롭다운 메뉴에서 서비스 계정의 역할을 선택합니다.
    사용 가능한 역할 목록은 로컬 시스템 조직 역할 또는 테넌트 조직의 경우 테넌트의 로컬 역할과 조직에 게시된 글로벌 역할로 구성됩니다.
  6. 서비스 계정의 소프트웨어 ID를 입력하거나 소프트웨어 ID 생성 버튼을 사용하여 생성하고 입력합니다.

    서비스 계정에는 VMware Cloud Director에 연결하는 소프트웨어를 나타내는 UUID 형식의 고유 식별자인 소프트웨어 ID가 있어야 합니다. 이 ID는 일부 소프트웨어의 모든 버전 및 인스턴스에 대해 동일합니다.

    더 큰 솔루션의 경우 서비스 계정의 ID에 대한 제어 권한을 유지하려면 소프트웨어 ID 생성 옵션을 사용하지 말고 고유한 소프트웨어 ID를 생성합니다.

  7. (선택 사항) 서비스 계정을 사용하여 시스템의 소프트웨어 버전을 입력합니다.
    소프트웨어 버전은 서비스 계정과 연결된 선택적 벤더 지정 정보 메타데이터의 일부입니다. 소프트웨어의 일부가 변경되는 시점을 추적하기 위해 VMware Cloud Director는 소프트웨어 버전을 사용합니다. 소프트웨어 버전은 서비스 계정을 식별하는 데 유용할 수 있습니다.
  8. (선택 사항) 클라이언트 URI를 입력합니다.
    클라이언트 URI(Uniform Resource Identifier)는 벤더 웹 페이지의 URL이며 클라이언트에 대한 정보를 제공합니다.
  9. 다음을 클릭합니다.
  10. (선택 사항) 서비스 계정에서 관리할 리소스에 대한 할당량을 추가합니다.
    이 할당량은 서비스 계정이 스토리지 및 계산 리소스를 사용할 수 있는 양을 제한합니다.
  11. 서비스 계정 정보를 검토한 후 마침을 클릭합니다.

결과

서비스 계정이 서비스 계정 페이지에 Created 상태로 나타납니다.

VMware Cloud Director API를 사용하여 서비스 계정을 생성할 수도 있습니다. API 요청은 사용자 API 토큰 생성과 동일한 API 끝점을 사용하지만 software_id 필드가 있으면 서비스 계정을 생성하려는 의도를 나타냅니다.

샘플 요청:
POST /oauth/provider/register 

Accept:application/json

Content-Type:application/json

Authorization:Bearer eyJhbGciOiJSUzI...7g7rA 

Body: { 

    "client_name": "exampleServiceAccount", 

    "software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", 

    "scope": "urn:vcloud:role:System%20Administrator", 

    "client_uri": "https://www.companyname.com", 

    "software_version": "1.0" 

} 
샘플 응답:
{ 

"client_name": "exampleServiceAccount", 

"client_id": "734e3845-1573-4f07-9b6c-b493c9042187", 

"grant_types": [ 

"urn:ietf:params:oauth:grant-type:device_code" 

], 

"token_endpoint_auth_method": "none", 

"client_uri": "https://www.company_name.com", 

"software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", 

"software_version": "1.0", 

"scope": "urn:vcloud:role:System%20Administrator" 

} 

다음에 수행할 작업

서비스 계정 세부 정보에 나타나는 클라이언트 ID를 복사합니다. 서비스 계정에 액세스 권한을 부여하려면 클라이언트 ID를 사용해야 합니다.

서비스 계정에 액세스 권한 부여

서비스 계정을 생성하고 애플리케이션이 액세스 토큰을 받기 위한 권한 부여를 요청한 후 VMware Cloud Director Service Provider Admin Portal을 사용하여 토큰을 부여할 수 있습니다.

참고: 이 절차 중에 시간 초과 기간이 만료되면 Service Provider Admin Portal의 서비스 계정 상태가 Created로 다시 변경되며 절차를 다시 시작해야 합니다.

사전 요구 사항

  1. Service Provider Admin Portal의 서비스 계정 세부 정보에서 클라이언트 ID를 복사합니다.
  2. 계정을 요청한 애플리케이션이 https://site.cloud.example.com/oauth/provider/device_authorization API 끝점에 대해 OAuth 2.0 Device Authorization Grant RFC 준수 요청을 수행하는지 확인합니다. 디바이스 권한 부여 요청에 대한 자세한 내용은 RFC 8628 섹션 3.1을 참조하십시오.
    client_ID Generated_Client_ID

    애플리케이션이 액세스를 요청하면 Service Provider Admin Portal의 서비스 계정 상태가 Requested로 변경됩니다. 애플리케이션은 디바이스 코드, 사용자 코드 및 몇 가지 추가 정보를 수신합니다.

    샘플 요청:
    POST /oauth/provider/device_authorization
    Accept:application/json 
    Content-Type: application/x-www-form-urlencoded
    Body:
    client_id=734e3845-1573-4f07-9b6c-b493c9042187
    샘플 응답:
    {
    "device_code": "tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw",
    "user_code": "3VL8-SQVJ",
    "verification_uri": "https://[VCD]/provider/administration/access-control/service-accounts",
    "expires_in": 3600,
    "interval": 60
    }

    디바이스는 RFC에 따라 위의 응답(초) /oauth/provider/token 에 지정된 빈도로 폴링해야 합니다. 디바이스는 VMware Cloud Director에서 토큰을 수신하거나 요청 시간이 초과될 때까지 디바이스 코드를 사용해야 합니다.

    샘플 요청:
    POST: /oauth/provider/token
    Accept:application/json 
    Content-Type: application/x-www-form-urlencoded
    Body:
    client_id= 734e3845-1573-4f07-9b6c-b493c9042187&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code&device_code=tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw
    부여 전 샘플 응답:
    {
        "error": "authorization_pending",
        "error_description": "Device authorization request pending",
        "error_uri": null,
        "minorErrorCode": "authorization_pending",
        "message": "Device authorization request pending",
        "stackTrace": null
    }
    부여 후 샘플 응답:
    {
        "access_token": "eyJhbGciOiJSU…HqJaDud1sVA",
        "token_type": "Bearer",
        "expires_in": 2592000,
        "refresh_token": "SsybukUed8SBP2p1AaFiGJhrntQNWZVX"
    }

    액세스 요청을 확인하거나 거부하지 않으면 사용자 코드가 시간 초과됩니다. 시간 초과 기간은 디바이스 권한 부여 요청에 대한 응답에 나타납니다.

    애플리케이션과 관리자가 서로에 해당하는 디바이스 코드와 사용자 코드를 사용하는 경우에만 VMware Cloud Director가 애플리케이션에 기본 API 토큰을 부여합니다.

  3. 애플리케이션에서 사용자 코드를 가져옵니다. 4단계에서 코드를 입력해야 합니다.

프로시저

  1. 위쪽 탐색 모음에서 관리를 선택합니다.
  2. 왼쪽 패널의 제공자 액세스 제어 아래에서 서비스 계정을 선택합니다.
  3. 액세스 요청 검토를 클릭합니다.
  4. 사전 요구 사항 3에서 가져온 애플리케이션의 사용자 코드를 입력하고 조회를 클릭한 후 요청된 액세스 세부 정보를 확인합니다.
  5. 애플리케이션에 대한 액세스 권한을 부여합니다.
    애플리케이션에 대한 액세스를 거부하는 경우 Service Provider Admin Portal의 서비스 계정 상태가 다시 Created로 변경됩니다.

결과

서비스 요청 상태가 Granted로 변경됩니다. VMware Cloud Director는 서비스 계정에 연결된 애플리케이션에 API 토큰의 형태로 기본 API 토큰을 부여합니다. RFC에 필요한 대로 응답에 포함되며 서비스 계정에서 즉시 사용하기 위한 사용자 세션을 나타내는 OAuth 액세스 토큰입니다. 애플리케이션이 OAuth 액세스 토큰을 즉시 사용하지 않는 경우 구성된 유휴 세션 시간 초과에 따라 세션이 시간 초과됩니다. 또한 서비스 계정이 명시적으로 로그아웃될 수 있으며 보안상의 이유뿐만 아니라 서비스 계정에 대한 좋은 테스트 실행을 제공하여 VMware Cloud Director에 API 호출을 수행하는 것이 좋습니다. 애플리케이션이 API 토큰을 가져오면 상태가 Active로 변경됩니다.

다음에 수행할 작업

  • 할당된 서비스 계정 역할, 소프트웨어 ID, 소프트웨어 버전, 클라이언트 URI 또는 할당량 제한을 변경하려면 서비스 계정을 선택하고 서비스 계정 편집을 클릭합니다. 변경 사항은 다음 토큰 새로 고침 시 적용됩니다.
  • 부여된 API 토큰이 유효하지 않게 되도록 서비스 계정 액세스를 해지하려면 취소를 클릭합니다. VMware Cloud Director는 모든 활성 세션을 종료합니다. API 토큰을 해지해도 서비스 계정은 삭제되지 않지만 계정 상태가 Created로 변경됩니다. 애플리케이션이 이미 다시 액세스를 요청한 경우 서비스 계정의 상태가 Requested로 변경됩니다. 다시 한 번 절차에 따라 계정이 Active가 되도록 서비스 계정에 액세스 권한을 부여해야 합니다.