Policy 생성

Prev Next

One Click Multi DRM 라이선스 발급에 필요한 Policy 를 생성하는 API 입니다.

참고
  • Policy 상세 설정을 통해 DRM 라이선스에 DRM 타입별 재생 및 보안 레벨 정책을 적용할 수 있습니다.
  • Policy 상세 설정을 통해 라이선스 유효 기간, Persistent 여부 등 재생과 관련된 정책을 설정할 수 있습니다.
  • 해상도 별 트랙이 나누어진 콘텐츠의 경우, playback policy는 모든 트랙에 동일하게 적용됩니다.
  • One Click Multi DRM 상품은 현재 싱글키 라이선스만 지원하며, 멀티 트랙별 라이선스 지원은 향후 지원 예정입니다.
  • One Click Multi DRM 상품에서 제공 중인 재생 관련 Policy 세부 옵션은 Pallycon Playback policy 상세 옵션 가이드에서 확인하실 수 있습니다.
  • One Click Multi DRM 상품에서 제공 중인 보안 관련 Policy 세부 옵션은 Pallycon Security policy 상세 옵션 가이드를 통해 확인하실 수 있습니다.
  • One Click Multi DRM 상품에서 제공하는 Policy 세부 설정은 Pallycon DRM 에서 제공하는 옵션을 그대로 지원합니다.
    DRM 타입별 상세 지원 단말 보안 레벨은 개별 단말 기기 지원 현황을 확인하시기 바랍니다.

요청

POST https://multi-drm.apigw.gov-ntruss.com/api/v1/policy

요청 헤더

헤더명 필수 여부 설명
x-ncp-apigw-timestamp YES 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타냄
API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주
x-ncp-apigw-timestamp:{Timestamp}
x-ncp-iam-access-key YES 네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID 값
x-ncp-iam-access-key:{Sub Account Access Key}
x-ncp-apigw-signature-v2 YES Access Key ID 값과 Secret Key로 암호화한 서명
x-ncp-apigw-signature-v2:{API Gateway Signature}
Content-Type YES Request body content type을 application/json으로 지정
Content-Type: application/json
x-ncp-region_code YES 리전 코드 (KR)

요청 바디

필드명 타입 필수 여부 제약 설명
policyName String Y
persistent Boolean Y 기본값 : false 오프라인용 라이선스 저장 여부
true : 라이선스 유지, false : 재생 후 라이선스 제거(스트리밍)
rentalDuration Integer Y 기본값 : 0
0-2,147,483,647
오프라인 렌탈 시나리오 사용 시 설정
(해당 옵션 사용시 persistent : true 설정 필요)
다운로드 후 최초 재생 시작 시점까지 라이선스 유효 기간 (단위: 초)
playbackDuration Integer Y 기본값: 0
0-2,147,483,647
최초 재생 시작 시점 이후부터의 라이선스 유효 기간 (단위: 초)
drmPolicyConfig Object[Array] Y drm type 별 policy 상세 설정
drmPolicyConfig{}.wideVine Object N Widevine 의 policy
drmPolicyConfig{}.wideVine{}.useYn Boolean N Widevine 의 policy 설정 적용 유무
drmPolicyConfig{}.wideVine{}.securityLevel Integer N 1:SW_SECURE_CRYPTO
2:SW_SECURE_DECODE
3:HW_SECURE_CRYPTO
4:HW_SEURE_DECODE
5:HW_SECURE_ALL
해당 트랙에 대한 Widevine security level 설정
1:SW_SECURE_CRYPTO
2:SW_SECURE_DECODE
3:HW_SECURE_CRYPTO
4:HW_SECURE_DECODE
5:HW_SECURE_ALL - 5로 설정하면 Widevine L1 기기에서만 재생 가능
drmPolicyConfig{}.wideVine{}.hdcp String N HDCP_NONE
HDCP_V1
HDCP_V2
HDCP_V2_1
HDCP_V2_2
HDCP_NO_DIGITAL_OUTPUT
디지털 출력에 대한 보안(HDCP) 레벨 설정 입력값: “HDCP_NONE”, “HDCP_V1”, “HDCP_V2”, “HDCP_V2_1”, “HDCP_V2_2”, “HDCP_NO_DIGITAL_OUTPUT” 중 하나
drmPolicyConfig{}.wideVine{}.cgms String N CGMS_NONE
COPY_FREE
COPY_ONCE
COPY_NEVER
아날로그 출력에 대한 보안(CGMS-A) 레벨 설정- 입력값: “CGMS_NONE”, “COPY_FREE”, “COPY_ONCE”, “COPY_NEVER” 중 하나
drmPolicyConfig{}.wideVine{}.disableAnalogOutputYn Boolean N 아날로그 출력 허용 여부 (false: 아날로그 출력 허용)
drmPolicyConfig{}.wideVine{}.hdcpSrmRule String N HDCP_SRM_RULE_NONE
CURRENT_SRM
HDCP 기기가 SRM(System Renewability Message)을 처리하지 못하는 경우에 해당 트랙의 재생 여부 설정.
CURRENT_SRM: 최신 SRM 적용 안되는 기기에서는 해당 트랙 재생 안됨입력값: “HDCP_SRM_RULE_NONE”, “CURRENT_SRM” 중 하나
drmPolicyConfig{}.wideVine{}.deviceRevocation Boolean N Revoke(Widevine 지원 대상에서 철회)된 안드로이드 기기에 대한 라이선스 발급 허용 여부 (기본값: 발급 허용하지 않음)
drmConfig{}.playReady Object N PlayReady 의 policy
drmConfig{}.playReady{}.useYn Boolean N PlayReady 의 policy 설정 적용 유무
drmConfig{}.playReady{}.securityLevel Integer N 150
2000
3000
해당 트랙에 대한 PlayReady security level. (150, 2000, 3000) 하드웨어 DRM 적용 시 3000으로 설정.
drmConfig{}.playReady{}.digitalVideoProtectionLevel Integer N 100
250
270
300
301
디지털 비디오 출력에 대한 보안 레벨 설정 (100, 250, 270, 300, 301)
drmConfig{}.playReady{}.analogVideoProtectionLevel Integer N 100
150
200
201
아날로그 비디오 출력에 대한 보안 레벨 설정 (100, 150, 200, 201)
drmConfig{}.playReady{}.digitalAudioProtectionLevel Integer N 100
250
300
301
디지털 오디오 출력에 대한 보안 레벨 설정 (100, 250, 300, 301)
drmConfig{}.playReady{}.hdcpUseYn Boolean N OPL 설정에 따라 HDCP가 적용될 때, Type 1(HDCP V2.2 이상)이 요구되는지 여부를 설정. (true 설정 시 HDCP 2.2 이상 필요)
drmConfig{}.fairPlay Object N FairPlay Streaming 의 policy
drmConfig{}.fairPlay{}.useYn Boolean Y FairPlay Streaming 의 policy 설정 적용 유무
drmConfig{}.fairPlay{}.hdcpEnforcement String N -1 (HDCP 미적용)
0 (HDCP Type 0(버전 무관))
1 (HDCP Type 1(2.2 이상 필요))
해당 트랙에 대한 HDCP 적용 여부 및 HDCP 버전
-1: HDCP 미적용
0: HDCP Type 0(버전 무관)
1: HDCP Type 1(2.2 이상 필요)
drmConfig{}.fairPlay{}.allowAirPlay Boolean N AirPlay 허용 여부
drmConfig{}.fairPlay{}.allowAvAdaptor Boolean N 디지털 AV 어댑터를 통한 출력 허용 여부

응답

필드명 타입 필수 여부 제약 설명
policyName String Y
policyStatus String Y CREATING
READY
DELETED
UPDATING
Policy 상태
policyId Integer Y default Policy : 0 생성된 PolicyId
policyCreatedTime Timestamp N Policy 생성 시각
policyUpdateTime Timestamp N Policy 설정 변경 시각
persistent Boolean Y 기본값 : false 오프라인용 라이선스 저장 여부
true : 라이선스 유지, false : 재생 후 라이선스 제거(스트리밍)
rentalDuration Integer Y 기본값 : 0
0-2,147,483,647
오프라인 렌탈 시나리오 사용 시 설정
(해당 옵션 사용시 persistent : true 설정 필요)
다운로드 후 최초 재생 시작 시점까지 라이선스 유효 기간 (단위: 초)
playbackDuration Integer Y 기본값: 0
0-2,147,483,647
최초 재생 시작 시점 이후부터의 라이선스 유효 기간 (단위: 초)
drmPolicyConfig Object[Array] Y drm type 별 policy 상세 설정
drmPolicyConfig{}.wideVine Object N Widevine 의 policy
drmPolicyConfig{}.wideVine{}.useYn Boolean N Widevine 의 policy 설정 적용 유무
drmPolicyConfig{}.wideVine{}.securityLevel Integer N 1:SW_SECURE_CRYPTO
2:SW_SECURE_DECODE
3:HW_SECURE_CRYPTO
4:HW_SECURE_DECODE
5:HW_SECURE_ALL
해당 트랙에 대한 Widevine security level 설정
1:SW_SECURE_CRYPTO
2:SW_SECURE_DECODE
3:HW_SECURE_CRYPTO
4:HW_SECURE_DECODE
5:HW_SECURE_ALL - 5로 설정하면 Widevine L1 기기에서만 재생 가능
drmPolicyConfig{}.wideVine{}.hdcp String N HDCP_NONE
HDCP_V1
HDCP_V2
HDCP_V2_1
HDCP_V2_2
HDCP_NO_DIGITAL_OUTPUT
디지털 출력에 대한 보안(HDCP) 레벨 설정 입력값: “HDCP_NONE”, “HDCP_V1”, “HDCP_V2”, “HDCP_V2_1”, “HDCP_V2_2”, “HDCP_NO_DIGITAL_OUTPUT” 중 하나
drmPolicyConfig{}.wideVine{}.cgms String N CGMS_NONE
COPY_FREE
COPY_ONCE
COPY_NEVER
아날로그 출력에 대한 보안(CGMS-A) 레벨 설정- 입력값: “CGMS_NONE”, “COPY_FREE”, “COPY_ONCE”, “COPY_NEVER” 중 하나
drmPolicyConfig{}.wideVine{}.disableAnalogOutputYn Boolean N 아날로그 출력 허용 여부 (false: 아날로그 출력 허용)
drmPolicyConfig{}.wideVine{}.hdcpSrmRule String N HDCP_SRM_RULE_NONE
CURRENT_SRM
HDCP 기기가 SRM(System Renewability Message)을 처리하지 못하는 경우에 해당 트랙의 재생 여부 설정.
CURRENT_SRM: 최신 SRM 적용 안되는 기기에서는 해당 트랙 재생 안됨입력값: “HDCP_SRM_RULE_NONE”, “CURRENT_SRM” 중 하나
drmPolicyConfig{}.wideVine{}.deviceRevocation Boolean N Revoke(Widevine 지원 대상에서 철회)된 안드로이드 기기에 대한 라이선스 발급 허용 여부 (기본값: 발급 허용하지 않음)
drmConfig{}.playReady Object N PlayReady 의 policy
drmConfig{}.playReady{}.useYn Boolean N PlayReady 의 policy 설정 적용 유무
drmConfig{}.playReady{}.securityLevel Integer N 150
2000
3000
해당 트랙에 대한 PlayReady security level
150, 2000, 3000
하드웨어 DRM 적용 시 3000으로 설정.
drmConfig{}.playReady{}.digitalVideoProtectionLevel Integer N 100
250
270
300
301
디지털 비디오 출력에 대한 보안 레벨 설정 (100, 250, 270, 300, 301)
drmConfig{}.playReady{}.analogVideoProtectionLevel Integer N 100
150
200
201
아날로그 비디오 출력에 대한 보안 레벨 설정 (100, 150, 200, 201)
drmConfig{}.playReady{}.digitalAudioProtectionLevel Integer N 100
250
300
301
디지털 오디오 출력에 대한 보안 레벨 설정 (100, 250, 300, 301)
drmConfig{}.playReady{}.hdcpUseYn Boolean N OPL 설정에 따라 HDCP가 적용될 때, Type 1(HDCP V2.2 이상)이 요구되는지 여부를 설정
(true 설정 시 HDCP 2.2 이상 필요)
drmConfig{}.fairPlay Object N FairPlay Streaming 의 policy
drmConfig{}.fairPlay{}.useYn Boolean Y FairPlay Streaming 의 policy 설정 적용 유무
drmConfig{}.fairPlay{}.hdcpEnforcement String N -1 (HDCP 미적용)
0 (HDCP Type 0(버전 무관))
1 (HDCP Type 1(2.2 이상 필요))
해당 트랙에 대한 HDCP 적용 여부 및 HDCP 버전
-1: HDCP 미적용
0: HDCP Type 0(버전 무관)
1: HDCP Type 1(2.2 이상 필요)
drmConfig{}.fairPlay{}.allowAirPlay Boolean N AirPlay 허용 여부
drmConfig{}.fairPlay{}.allowAvAdaptor Boolean N 디지털 AV 어댑터를 통한 출력 허용 여부

예시

요청 예시

POST /api/v1/policy
HOST: multi-drm.apigw.gov-ntruss.com
Content-Type: application/json
x-ncp-apigw-timestamp:1521787414578
x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
x-ncp-region_code:KR

# case 1. set all drmType 
{
  "drmPolicyConfig": {
    "fairplay": {
      "allowAirPlay": true,
      "allowAvAdaptor": true,
      "hdcpEnforcement": "-1",
      "useYn": true
    },
    "playready": {
      "analogVideoProtectionLevel": "100",
      "digitalAudioProtectionLevel": "100",
      "digitalVideoProtectionLevel": "100",
      "hdcpUseYn": true,
      "securityLevel": "150",
      "useYn": true
    },
    "widevine": {
      "cgms": "CGMS_NONE",
      "deviceRevocation": true,
      "disableAnalogOutputYn": true,
      "hdcp": "HDCP_NONE",
      "hdcpSrmRule": "HDCP_SRM_RULE_NONE",
      "securityLevel": "1",
      "useYn": true
    }
  },
  "persistent": true,
  "playbackDuration": 0,
  "policyName": "mySamplePolicy",
  "rentalDuration": 0
}
POST /api/v1/policy
HOST: multi-drm.apigw.gov-ntruss.com
Content-Type: application/json
x-ncp-apigw-timestamp:1521787414578
x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
x-ncp-region_code:KR

# case 2. set drm policy without fairPlay
{
  "drmPolicyConfig": {
    "fairplay": {
      "useYn": false
    },
    "playready": {
      "analogVideoProtectionLevel": "100",
      "digitalAudioProtectionLevel": "100",
      "digitalVideoProtectionLevel": "100",
      "hdcpUseYn": true,
      "securityLevel": "150",
      "useYn": true
    },
    "widevine": {
      "cgms": "CGMS_NONE",
      "deviceRevocation": true,
      "disableAnalogOutputYn": true,
      "hdcp": "HDCP_NONE",
      "hdcpSrmRule": "HDCP_SRM_RULE_NONE",
      "securityLevel": "1",
      "useYn": true
    }
  },
  "persistent": true,
  "playbackDuration": 0,
  "policyName": "mySamplePolicy",
  "rentalDuration": 0
}

응답 예시

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 20 Nov 2023 19:53:32 GMT
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4

### case 1. 
{
  "success": true,
  "content": {
    "policyId": 122,
    "policyName": "mySamplePolicy",
    "policyStatus": "CREATED",
    "policyCreatedTime": 1700479924517,
    "policyUpdateTime": 1700479924526,
    "persistent": true,
    "rentalDuration": 0,
    "playbackDuration": 0,
    "drmPolicyConfig": {
      "wideVine": {
        "useYn": true,
        "securityLevel": 1,
        "hdcp": "HDCP_NONE",
        "cgms": "CGMS_NONE",
        "disableAnalogOutputYn": true,
        "hdcpSrmRule": "HDCP_SRM_RULE_NONE",
        "deviceRevocation": true
      },
      "playReady": {
        "useYn": true,
        "securityLevel": 150,
        "digitalVideoProtectionLevel": 100,
        "analogVideoProtectionLevel": 100,
        "digitalAudioProtectionLevel": 100,
        "hdcpUseYn": true
      },
      "fairPlay": {
        "useYn": true,
        "hdcpEnforcement": -1,
        "allowAirPlay": true,
        "allowAvAdaptor": true
      }
    }
  }
}
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 20 Nov 2023 19:53:32 GMT
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4

### case 2. 
{
  "success": true,
  "content": {
    "policyId": 123,
    "policyName": "mySamplePolicy",
    "policyStatus": "CREATED",
    "policyCreatedTime": 1700480181622,
    "policyUpdateTime": 1700480181634,
    "persistent": true,
    "rentalDuration": 0,
    "playbackDuration": 0,
    "drmPolicyConfig": {
      "wideVine": {
        "useYn": true,
        "securityLevel": 1,
        "hdcp": "HDCP_NONE",
        "cgms": "CGMS_NONE",
        "disableAnalogOutputYn": true,
        "hdcpSrmRule": "HDCP_SRM_RULE_NONE",
        "deviceRevocation": true
      },
      "playReady": {
        "useYn": true,
        "securityLevel": 150,
        "digitalVideoProtectionLevel": 100,
        "analogVideoProtectionLevel": 100,
        "digitalAudioProtectionLevel": 100,
        "hdcpUseYn": true
      },
      "fairPlay": {
        "useYn": false
      }
    }
  }
}