CloudTrail에 RESTful API를 호출해, 사용자가 설정한 조건에 맞는 이벤트를 조회할 수 있습니다.
CloudTrail API를 사용하려면 Appkey가 필요합니다. Appkey는 API 호출 시 요청 URL에 포함하여 특정 리소스를 가리키고 식별하는 데 사용됩니다.
Appkey 확인 및 사용에 대한 자세한 내용은 Appkey를 참고하세요.
CloudTrail API(2.0 버전 이후)를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다.
User Access Key와 Secret Access Key는 콘솔의 API 보안 설정에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 User Access Key를 참고하세요.
모든 API 요청에 대해 HTTP 응답 코드는 200입니다. 자세한 응답 결과는 Response Body의 header 항목을 참고합니다.
{
"header" : {
"isSuccessful" : true,
"resultCode": 0,
"resultMessage" : "Success."
}
}
| Key | Type | Description |
|---|---|---|
| header | Object | 응답 헤더 |
| header.isSuccessful | boolean | 성공 여부 |
| header.resultCode | int | 응답 코드. 성공 시 0, 실패 시 오류 코드 반환 |
| header.resultMessage | String | 응답 메시지. 성공 시 "SUCCESS", 실패 시 오류 메시지 반환 |
[Method, URL]
| Method | URI |
|---|---|
| POST | /cloud-trail/v1.0/appkeys/{appKey}/events/search |
[Path Variable]
| Key | Value |
|---|---|
| appKey | 콘솔에서 발급 받은 AppKey |
[Request Body]
{
"idNo" : "string",
"member" : {
"memberType" : "string", /* TOAST, IAM 중 선택 */
"userCode" : "string", /* IAM member type일 경우 작성 */
"emailAddress" : "string", /* TOAST member type일 경우 작성 */
"idNo" : "string"
},
"eventId" : "string",
"startDate": "2019-09-01T02:00:00.000Z",
"endDate": "2019-09-12T03:13:00.000Z",
"page": {
"sortBy": "string",
"limit": 20,
"page": 0
}
}
| Key | Type | Required | Description |
|---|---|---|---|
| idNo | String | X | 이벤트를 발생시킨 회원 아이디 번호(UUID) |
| member | Object | X | 이벤트를 발생시킨 회원 |
| member.memberType | String | X | 이벤트를 발생시킨 회원의 타입(NHN Cloud, IAM) |
| member.userCode | String | X | 이벤트를 발생시킨 회원의 userCode(IAM 멤버일 경우) |
| member.emailAddress | String | X | 이벤트를 발생시킨 회원의 이메일 주소(NHN Cloud 회원일 경우) |
| member.idNo | String | X | 이벤트를 발생시킨 회원 IdNo(UUID) |
| eventId | String | O | 조회할 이벤트의 ID |
| startDate | Date | O | 조회할 기간의 시작 날짜 |
| endDate | Date | O | 조회할 기간의 끝나는 날짜 |
| page | Object | O | 조회 결과의 페이지 조건 |
| page.sortBy | String | X | 조회 결과의 사이즈 정렬 조건(ex. eventTime:desc, idNo:asc) |
| page.limit | Integer | O | 조회 결과의 사이즈 조건(기본: 20, 최대 1000) |
| page.page | Integer | O | 조회 결과의 페이지 중 조회할 페이지 조건 |
[Response Body]
{
"header": {
"resultCode": 0,
"resultMessage": "SUCCESS",
"isSuccessful": true
},
"page": {
"content": [
{
"eventTime": "2019-11-01T10:31:49.348+0000",
"userIdNo": "String",
"userIp":"10.00.00.000",
"userAgent":"ReactorNetty/0.8.4.RELEASE",
"userName": "홍길동",
"userId": "test_email@nhn.com",
"eventSourceType": "API",
"productId": "M0XnzOFE",
"region": "String",
"orgId": "String",
"projectId": "String",
"projectName": "String",
"appKey": "String",
"tenantId": "String",
"eventId": "event_id.iam.member.role.update",
"eventLogUuid": "17278c08-8338-4fd9-9693-931290adb9ec",
"request": "{\n\t\"id\" : \"2\",\n\t\"productId\" : \"M0XnzOFE\",\n\t\"uuid\" : \"String\"\n\t\n}",
"response": "{\"header\":{\"resultCode\":0,\"resultMessage\":\"SUCCESS\",\"isSuccessful\":true}}",
"eventTarget": {
"targetMembers": [
{
"idNo": "String",
"name": "임꺽정",
"userCode": "test_user",
"emailAddress": "test_email2@nhn.com"
}
]
}
}
]
}
}
| Key | Type | Description |
|---|---|---|
| eventTime | Date | 이벤트 발생 시간 |
| userIdNo | Object | 이벤트를 발생시킨 회원의 UUID |
| userName | String | 이벤트를 발생시킨 회원의 이름 |
| UserId | String | 이벤트를 발생시킨 회원의 ID(NHN Cloud 회원 계정일 경우 이메일 형식) |
| userIp | String | 이벤트를 발생시킨 회원의 IP |
| userAgent | String | 이벤트를 발생시킨 회원의 에이전트 |
| eventSourceType | String | 이벤트를 발생시킨 주체의 타입 |
| productId | String | 이벤트가 발생한 상품 ID |
| region | String | 이벤트가 발생한 리전 |
| orgId | String | 이벤트가 발생한 조직 ID |
| projectId | String | 이벤트가 발생한 프로젝트 ID |
| projectName | String | 이벤트가 발생한 프로젝트 이름 |
| appKey | String | 이벤트가 발생한 앱키 |
| tenantId | String | 이벤트가 발생한 테넌트 ID |
| eventId | String | 이벤트 ID |
| eventLogUuid | String | 이벤트 로그 일련 번호(식별 키) |
| request | String | 발생한 이벤트의 요청 내용 |
| response | String | 발생한 이벤트의 응답 내용 |
| eventTarget | Object | 발생한 이벤트의 대상 |
| eventTarget.targetMembers | Object | 발생한 이벤트의 대상 회원 |
| targetMembers.idNo | String | 발생한 이벤트의 대상 회원의 UUID |
| targetMembers.name | String | 발생한 이벤트의 대상 회원의 이름 |
| targetMembers.userCode | Integer | 발생한 이벤트의 대상 회원의 ID(IAM 멤버일 경우) |
| targetMembers.emailAddress | String | 발생한 이벤트의 대상 회원의 이메일 주소(NHN Cloud 회원일 경우) |
[필요한 권한]
* CloudTrail:EventLog.List
[Method, URL]
| Method | URI |
|---|---|
| POST | /cloud-trail/v2.0/appkeys/{appKey}/events/search |
[HEADER]
| Key | Value |
|---|---|
| X-TC-AUTHENTICATION-ID | 콘솔에서 발급 받은 User Access Key ID |
| X-TC-AUTHENTICATION-SECRET | 콘솔에서 발급 받은 Secret Access Key |
[Path Variable]
| Key | Value |
|---|---|
| appKey | 콘솔에서 발급 받은 AppKey |
[Request Body]
{
"idNo" : "string",
"member" : {
"memberType" : "string", /* TOAST, IAM 중 선택 */
"userCode" : "string", /* IAM member type일 경우 작성 */
"emailAddress" : "string", /* TOAST member type일 경우 작성 */
"idNo" : "string"
},
"eventId" : "string",
"startDate": "2019-09-01T02:00:00.000Z",
"endDate": "2019-09-12T03:13:00.000Z",
"page": {
"sortBy": "string",
"limit": 20,
"page": 0
}
}
| Key | Type | Required | Description |
|---|---|---|---|
| idNo | String | X | 이벤트를 발생시킨 회원 아이디 번호(UUID) |
| member | Object | X | 이벤트를 발생시킨 회원 |
| member.memberType | String | X | 이벤트를 발생시킨 회원의 타입(NHN Cloud, IAM) |
| member.userCode | String | X | 이벤트를 발생시킨 회원의 userCode(IAM 멤버일 경우) |
| member.emailAddress | String | X | 이벤트를 발생시킨 회원의 이메일 주소(NHN Cloud 회원일 경우) |
| member.idNo | String | X | 이벤트를 발생시킨 회원 IdNo(UUID) |
| eventId | String | O | 조회할 이벤트의 ID |
| startDate | Date | O | 조회할 기간의 시작 날짜 |
| endDate | Date | O | 조회할 기간의 끝나는 날짜 |
| page | Object | O | 조회 결과의 페이지 조건 |
| page.sortBy | String | X | 조회 결과의 사이즈 정렬 조건(ex. eventTime:desc, idNo:asc) |
| page.limit | Integer | O | 조회 결과의 사이즈 조건(기본: 20, 최대 1000) |
| page.page | Integer | O | 조회 결과의 페이지 중 조회할 페이지 조건 |
[Response Body]
{
"header": {
"resultCode": 0,
"resultMessage": "SUCCESS",
"isSuccessful": true
},
"page": {
"content": [
{
"eventTime": "2019-11-01T10:31:49.348+0000",
"userIdNo": "String",
"userIp":"10.00.00.000",
"userAgent":"ReactorNetty/0.8.4.RELEASE",
"userName": "홍길동",
"userId": "test_email@nhn.com",
"eventSourceType": "API",
"productId": "M0XnzOFE",
"region": "String",
"orgId": "String",
"projectId": "String",
"projectName": "String",
"appKey": "String",
"tenantId": "String",
"eventId": "event_id.iam.member.role.update",
"eventLogUuid": "17278c08-8338-4fd9-9693-931290adb9ec",
"request": "{\n\t\"id\" : \"2\",\n\t\"productId\" : \"M0XnzOFE\",\n\t\"uuid\" : \"String\"\n\t\n}",
"response": "{\"header\":{\"resultCode\":0,\"resultMessage\":\"SUCCESS\",\"isSuccessful\":true}}",
"eventTarget": {
"targetMembers": [
{
"idNo": "String",
"name": "임꺽정",
"userCode": "test_user",
"emailAddress": "test_email2@nhn.com"
}
]
}
}
]
}
}
| Key | Type | Description |
|---|---|---|
| eventTime | Date | 이벤트 발생 시간 |
| userIdNo | Object | 이벤트를 발생시킨 회원의 UUID |
| userName | String | 이벤트를 발생시킨 회원의 이름 |
| UserId | String | 이벤트를 발생시킨 회원의 ID(NHN Cloud 회원 계정일 경우 이메일 형식) |
| userIp | String | 이벤트를 발생시킨 회원의 IP |
| userAgent | String | 이벤트를 발생시킨 회원의 에이전트 |
| eventSourceType | String | 이벤트를 발생시킨 주체의 타입 |
| productId | String | 이벤트가 발생한 상품 ID |
| region | String | 이벤트가 발생한 리전 |
| orgId | String | 이벤트가 발생한 조직 ID |
| projectId | String | 이벤트가 발생한 프로젝트 ID |
| projectName | String | 이벤트가 발생한 프로젝트 이름 |
| appKey | String | 이벤트가 발생한 앱키 |
| tenantId | String | 이벤트가 발생한 테넌트 ID |
| eventId | String | 이벤트 ID |
| eventLogUuid | String | 이벤트 로그 일련 번호(식별 키) |
| request | String | 발생한 이벤트의 요청 내용 |
| response | String | 발생한 이벤트의 응답 내용 |
| eventTarget | Object | 발생한 이벤트의 대상 |
| eventTarget.targetMembers | Object | 발생한 이벤트의 대상 회원 |
| targetMembers.idNo | String | 발생한 이벤트의 대상 회원의 UUID |
| targetMembers.name | String | 발생한 이벤트의 대상 회원의 이름 |
| targetMembers.userCode | Integer | 발생한 이벤트의 대상 회원의 ID(IAM 멤버일 경우) |
| targetMembers.emailAddress | String | 발생한 이벤트의 대상 회원의 이메일 주소(NHN Cloud 회원일 경우) |