Atlassian Confluence Server와 Google SecOps 통합

이 문서에서는 Atlassian Confluence Server를 Google Security Operations (Google SecOps)와 통합하는 방법을 설명합니다.

통합 버전: 3.0

기본 요건

Confluence Server에 인증하려면 다음 옵션 중 하나를 선택하세요.

  • 전용 계정의 사용자 이름과 비밀번호입니다.
  • 개인 액세스 토큰 (PAT)입니다.

통합에 두 인증 옵션이 모두 제공되는 경우 PAT가 사용자 이름과 비밀번호보다 우선합니다.

사용자 이름과 비밀번호를 기반으로 하는 인증에는 통합에 사용될 전용 계정을 만들어야 합니다.
액세스 토큰을 기반으로 한 인증에는 계정 권한을 구성해야 합니다. 새 PAT가 생성되면 계정의 현재 권한 수준에 해당합니다.

토큰을 만들려면 다음 단계를 따르세요.

  1. Confluence에서 계정 > 계정 설정 > 개인 액세스 토큰으로 이동합니다.
  2. 토큰 만들기를 선택합니다.
  3. 만들려는 토큰의 이름을 지정합니다.
  4. (선택사항) 보안을 강화하기 위해 설정된 일수가 지나면 토큰이 자동으로 만료되도록 구성할 수 있습니다.
  5. 만들기를 클릭합니다.

통합 매개변수

통합에는 다음 매개변수가 필요합니다.

매개변수 이름 유형 기본값 필수 항목 설명
API 루트 문자열 https://ip_address 연결할 Confluence Server API 루트를 지정합니다.
사용자 이름 문자열 해당 사항 없음 거짓 연결에 사용할 사용자 이름을 지정합니다. 통합은 사용자 이름 + 비밀번호 또는 개인 액세스 토큰을 통한 인증을 지원합니다.
비밀번호 비밀번호 해당 사항 없음 거짓 연결에 사용할 비밀번호를 지정합니다. 통합은 사용자 이름 + 비밀번호 또는 개인 액세스 토큰을 통한 인증을 지원합니다.
개인 액세스 토큰 비밀번호 해당 사항 없음 거짓 연결에 사용할 토큰을 지정합니다. 통합은 사용자 이름 + 비밀번호 또는 개인 액세스 토큰을 통한 인증을 지원합니다.
SSL 확인 체크박스 체크박스 선택됨 거짓 사용 설정되면 API 루트에 대해 구성된 인증서가 검증됩니다.

Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참고하세요.

필요한 경우 이후 단계에서 변경할 수 있습니다. 통합 인스턴스를 구성한 후 플레이북에서 사용할 수 있습니다. 여러 인스턴스를 구성하고 지원하는 방법에 관한 자세한 내용은 여러 인스턴스 지원을 참고하세요.

작업

작업에 대한 자세한 내용은 내 Workdesk에서 대기 중인 작업에 응답수동 작업 실행을 참고하세요.

연결을 테스트합니다.

매개변수

해당 사항 없음

실행

작업이 항목에서 실행되지 않습니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False

작업이 성공하면 (응답에 json이 있고 서버 응답이 200임) is_successTrue로 설정되어야 합니다. 그 외의 경우에는 False입니다.

케이스 월
결과 유형 값/설명 유형 (항목/일반)
출력 메시지* 작업이 실패하거나 플레이북 실행을 중지하지 않습니다.
  • 성공한 경우:
    '제공된 연결 매개변수를 사용하여 Atlassian Confluence 서버 인스턴스에 성공적으로 연결되었습니다.' 출력
  • 사용자 이름과 비밀번호, PAT가 모두 제공된 경우:
    '통합에 사용자 이름과 비밀번호, 개인 액세스 토큰이 모두 제공되었으며 개인 액세스 토큰을 사용하여 연결됩니다.'

작업이 실패하고 플레이북 실행을 중지해야 합니다.
  • 사용자 이름과 비밀번호 및 PAT가 모두 제공되지 않은 경우:
    'Atlassian Confluence 서버에 연결하지 못했습니다. 연결하려면 사용자 이름과 비밀번호 또는 개인 액세스 토큰이 필요합니다.'를 출력합니다.
  • 잘못된 사용자 인증 정보 또는 연결 손실과 같은 중대한 오류인 경우:
    print "Atlassian Confluence Server 인스턴스에 연결할 수 없습니다. 오류: {0}".format(exception.stacktrace)
일반

페이지 나열

제공된 기준에 따라 Atlassian Confluence Server 인스턴스에서 사용할 수 있는 페이지를 나열합니다.

매개변수

매개변수 이름 유형 기본값 필수 항목 설명
필터 키 DDL 하나 선택

DDL 가능한 값:
  • 제목
  • 스페이스 이름
  • 상태
거짓 페이지를 필터링하는 데 사용해야 하는 키를 지정합니다.
필터 로직 DDL 지정되지 않음

DDL 가능한 값:
  • 지정되지 않음
  • 같음
  • 포함
거짓 적용할 필터 로직을 지정합니다. 필터링 로직은 Filter Key 매개변수에 제공된 값을 기반으로 작동합니다.
필터 값 문자열 해당 사항 없음 거짓 필터에 사용할 값을 지정합니다.
Equal을 선택하면 작업에서 결과 중 정확히 일치하는 항목을 찾으려고 시도합니다.
Contains이 선택되면 작업은 해당 하위 문자열을 포함하는 결과를 찾으려고 시도합니다.
이 매개변수에 아무것도 제공되지 않으면 필터가 적용되지 않습니다.
필터링 로직은 Filter Key 매개변수에 제공된 값을 기반으로 작동합니다.
반환할 최대 레코드 수 정수 50 거짓 반환할 레코드 수를 지정합니다.
아무것도 제공되지 않으면 작업에서 50개의 레코드를 반환합니다.

실행

작업이 항목에서 실행되지 않습니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False

작업이 성공적으로 실행되면 (오류가 반환되지 않고 서버 응답이 200 OK임) is_successTrue로 설정되어야 합니다.

JSON 결과
{
   "results": [
       {
           "id": "PAGE_ID",
           "type": "page",
           "status": "current",
           "title": "Tell people what you think in a comment (step 8 of 9)",
           "space": {
               "id": 131073,
               "key": "ds",
               "name": "Demonstration Space",
               "type": "global",
               "_links": {
                   "webui": "/display/ds",
                   "self": "http://192.0.2.45:8090/rest/api/space/ds"
               },
               "_expandable": {
                   "metadata": "",
                   "icon": "",
                   "description": "",
                   "retentionPolicy": "",
                   "homepage": "/rest/api/content/PAGE_ID"
               }
           },
           "extensions": {
               "position": 7
           },
           "_links": {
               "webui": "/pages/viewpage.action?pageId=PAGE_ID",
               "edit": "/pages/resumedraft.action?draftId=DRAFT_ID",
               "tinyui": "/x/AYAB",
               "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
           },
           "_expandable": {
               "container": "/rest/api/space/ds",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/PAGE_ID/child",
               "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
               "history": "/rest/api/content/PAGE_ID/history",
               "ancestors": "",
               "body": "",
               "version": "",
               "descendants": "/rest/api/content/PAGE_ID/descendant"
           }
       },
       ...
   ],
   "start": 0,
   "limit": 5,
   "size": 5,
   "_links": {
       "self": "http://192.0.2.45:8090/rest/api/content?expand=space",
       "next": "/rest/api/content?expand=space&limit=5&start=5",
       "base": "http://192.0.2.45:8090",
       "context": ""
   }
}
케이스 월
결과 유형 값/설명 유형 (항목/일반)
출력 메시지* 작업이 실패하거나 플레이북 실행을 중지하지 않습니다.

  • 데이터를 사용할 수 있는 경우(is_success = true):
'Atlassian Confluence Server에서 제공된 기준에 맞는 페이지를 찾았습니다'를 출력합니다.

  • 데이터를 사용할 수 없는 경우 (is_success=false)
print "No pages were found for the provided criteria in Atlassian Confluence Server"

  • '필터 값'이 비어 있는 경우 (is_success=true):
'필터 값' 매개변수에 값이 비어 있어 필터가 적용되지 않았습니다.

작업이 실패하고 플레이북 실행을 중지해야 합니다.

  • 필터 키가 '하나 선택'이고 필터 로직이 '같음' 또는 '포함'인 경우:
'{작업 이름}' 작업을 실행하는 동안 오류가 발생했습니다. 이유: Filter Key 매개변수에서 필드를 선택해야 합니다.

  • 반환할 최대 레코드 수에 잘못된 값이 제공된 경우:
'{작업 이름}' 작업을 실행하는 동안 오류가 발생했습니다. 이유: '반환할 최대 레코드'에 잘못된 값이 제공되었습니다(<제공된 값>). 양수를 제공해야 합니다.'

  • 잘못된 사용자 인증 정보, 서버 연결 없음 등 치명적인 오류인 경우:
"Error executing action "{action name}". 이유: {0}''.format(error.Stacktrace)

  • 사용자 이름+비밀번호와 PAT가 모두 제공되지 않은 경우:
print 'Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!'
일반
케이스 월 테이블 이름: 사용 가능한 Confluence 페이지
열:
  • ID
  • 제목
  • 스페이스바
  • 상태
  • 생성됨
일반

ID로 페이지 가져오기

ID로 Atlassian Confluence Server 페이지를 가져옵니다.

매개변수

매개변수 이름 유형 기본값 필수 항목 설명
페이지 ID 문자열 해당 사항 없음 반환할 페이지 ID를 지정합니다.
펼치기 CSV body.storage 거짓 페이지에 관한 추가 정보를 반환하려면 expand 매개변수를 지정하세요. 매개변수는 여러 값을 쉼표로 구분된 목록으로 허용합니다.
기본적으로 페이지의 콘텐츠는 body.storage로 가져옵니다.

실행

작업이 항목에서 실행되지 않습니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False

작업이 성공적으로 실행되면 (페이지가 반환되고 서버 응답이 200 OK임) is_successTrue로 설정되어야 합니다.

JSON 결과
{
   "id": "PAGE_ID",
   "type": "page",
   "status": "current",
   "title": "title",
   "body": {
       "storage": {
           "value": "<p>test page</p><p>11</p><p>aa</p><p>aa</p><p>aa</p><p><br /></p><p><br /></p>",
           "representation": "storage",
           "_expandable": {
               "content": "/rest/api/content/PAGE_ID"
           }
       },
       "_expandable": {
           "editor": "",
           "view": "",
           "export_view": "",
           "styled_view": "",
           "anonymous_export_view": ""
       }
   },
   "extensions": {
       "position": "none"
   },
   "_links": {
       "webui": "/display/SIEM/111",
       "edit": "/pages/resumedraft.action?draftId=PAGE_ID&draftShareId=cf8b3a21-8e36-4a83-a696-51fcb4428d1c",
       "tinyui": "/x/TIAB",
       "collection": "/rest/api/content",
       "base": "http://192.0.2.45:8090",
       "context": "",
       "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
   },
   "_expandable": {
       "container": "/rest/api/space/SIEM",
       "metadata": "",
       "operations": "",
       "children": "/rest/api/content/PAGE_ID/child",
       "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
       "history": "/rest/api/content/PAGE_ID/history",
       "ancestors": "",
       "version": "",
       "descendants": "/rest/api/content/PAGE_ID/descendant",
       "space": "/rest/api/space/SIEM"
   }
}
케이스 월
결과 유형 값/설명 유형 (항목/일반)
출력 메시지* 작업이 실패하거나 플레이북 실행을 중지하지 않습니다.

  • 페이지가 발견된 경우 (is_success = true):
print "Successfully fetched page information with id: <id>"

  • 데이터를 사용할 수 없는 경우 (is_success=false):
print "The following page id was not found in the Atlassian Confluence Server: <page id>"

작업이 실패하고 플레이북 실행이 중지되어야 합니다.

  • 잘못된 사용자 인증 정보, 서버 연결 없음 등 치명적인 오류인 경우:
"작업 '<작업 이름>'을 실행하는 중에 오류가 발생했습니다. 이유: {0}''.format(error.Stacktrace)

  • 사용자 이름 + 비밀번호와 PAT가 모두 제공되지 않은 경우:
print 'Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!'
일반

하위 페이지 가져오기

Atlassian Confluence Server 페이지의 하위 페이지를 가져옵니다.

매개변수

매개변수 이름 유형 기본값 필수 항목 설명
페이지 ID 문자열 해당 사항 없음 반환할 페이지 ID를 지정합니다.
반환할 최대 레코드 수 정수 10 반환할 하위 페이지의 한도를 지정합니다.

실행

작업이 항목에서 실행되지 않습니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False

작업이 성공적으로 실행되면 (페이지가 반환되고 서버 응답이 200 OK임) is_successTrue로 설정되어야 합니다.

JSON 결과
{
   "results": [
       {
           "id": "PAGE_ID",
           "type": "page",
           "status": "current",
           "title": "test child page!",
           "extensions": {
               "position": "none"
           },
           "_links": {
               "webui": "/pages/viewpage.action?pageId=PAGE_ID",
               "edit": "/pages/resumedraft.action?draftId=PAGE_ID&draftShareId=799fd068-5053-4889-9120-c1a3c970fdbd",
               "tinyui": "/x/T4AB",
               "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
           },
           "_expandable": {
               "container": "/rest/api/space/SIEM",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/PAGE_ID/child",
               "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
               "history": "/rest/api/content/PAGE_ID/history",
               "ancestors": "",
               "body": "",
               "version": "",
               "descendants": "/rest/api/content/PAGE_ID/descendant",
               "space": "/rest/api/space/SIEM"
           }
       }
   ],
   "start": 0,
   "limit": 1,
   "size": 1,
   "_links": {
       "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID/child/page",
       "base": "http://192.0.2.45:8090",
       "context": ""
   }
}
케이스 월
결과 유형 값/설명 유형 (항목/일반)
출력 메시지* 작업이 실패하거나 플레이북 실행을 중지하지 않아야 합니다.

데이터를 사용할 수 있는 경우 (is_success = true):
print '제공된 Atlassian Confluence Server 페이지 ID <page_id>의 하위 페이지를 찾았습니다.'

데이터를 사용할 수 없는 경우 (is_success=false)
print '제공된 Atlassian Confluence Server 페이지 ID <page_id>의 하위 페이지를 찾을 수 없습니다.'

작업이 실패하고 플레이북 실행이 중지되어야 합니다.

  • 반환할 최대 레코드 수에 잘못된 값이 제공된 경우:
'{작업 이름}' 작업을 실행하는 동안 오류가 발생했습니다. 이유: '반환할 최대 레코드'에 잘못된 값이 제공되었습니다(<제공된 값>). 양수를 제공해야 합니다.'

  • 잘못된 사용자 인증 정보, 서버 연결 없음 등 치명적인 오류인 경우:
"Error executing action "{action name}". 이유: {0}''.format(error.Stacktrace)
  • 사용자 이름 + 비밀번호와 PAT가 모두 제공되지 않은 경우:
print 'Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!'
일반

페이지 댓글 가져오기

Atlassian Confluence Server 페이지의 댓글을 가져옵니다.

매개변수

매개변수 이름 유형 기본값 필수 항목 설명
페이지 ID 문자열 해당 사항 없음 반환할 페이지 ID를 지정합니다.
펼치기 CSV body.storage 거짓 페이지에 관한 추가 정보를 반환하려면 expand 매개변수를 지정하세요. 매개변수는 여러 값을 쉼표로 구분된 목록으로 허용합니다.
기본적으로 페이지의 콘텐츠는 body.storage로 가져옵니다.
반환할 최대 레코드 수 정수 10 반환할 하위 페이지의 한도를 지정합니다.

실행

작업이 항목에서 실행되지 않습니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False

작업이 성공적으로 실행되면 (댓글이 반환되고 서버 응답이 200 OK임) is_successTrue로 설정되어야 합니다.

JSON 결과
{
   "results": [
       {
           "id": "ID",
           "type": "comment",
           "status": "current",
           "title": "Re: 111",
           "body": {
               "storage": {
                   "value": "<p>comment1</p>",
                   "representation": "storage",
                   "_expandable": {
                       "content": "/rest/api/content/ID"
                   }
               },
               "_expandable": {
                   "editor": "",
                   "view": "",
                   "export_view": "",
                   "styled_view": "",
                   "anonymous_export_view": ""
               }
           },
           "extensions": {
               "location": "footer",
               "_expandable": {
                   "resolution": ""
               }
           },
           "_links": {
               "webui": "/display/SIEM/111?focusedCommentId=98387#comment-ID",
               "self": "http://203.0.113.1:8090/rest/api/content/ID"
           },
           "_expandable": {
               "container": "/rest/api/content/ID",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/ID/child",
               "restrictions": "/rest/api/content/ID/restriction/byOperation",
               "history": "/rest/api/content/ID/history",
               "ancestors": "",
               "version": "",
               "descendants": "/rest/api/content/ID/descendant",
               "space": "/rest/api/space/SIEM"
           }
       },
       ...
   ],
   "start": 0,
   "limit": 10,
   "size": 2,
   "_links": {
       "self": "http://203.0.113.1:8090/rest/api/content/ID/child/comment?expand=body.storage",
       "base": "http://203.0.113.1:8090",
       "context": ""
   }
}
케이스 월
결과 유형 값/설명 유형 (항목/일반)
출력 메시지* 작업이 실패하거나 플레이북 실행을 중지하지 않습니다.

  • 데이터를 사용할 수 있는 경우(is_success = true):
'제공된 Atlassian Confluence Server 페이지 ID(<page_id>)의 페이지 댓글을 가져왔습니다.' 출력

  • 데이터를 사용할 수 없는 경우 (is_success=false)
print "No page comments were found for the provided Atlassian Confluence Server page id <page_id>"

작업이 실패하고 플레이북 실행을 중지해야 합니다.

  • 반환할 최대 레코드 수에 잘못된 값이 제공된 경우:
'{작업 이름}' 작업을 실행하는 동안 오류가 발생했습니다. 이유: '반환할 최대 레코드'에 잘못된 값이 제공되었습니다(<제공된 값>). 양수를 제공해야 합니다.'

  • 잘못된 사용자 인증 정보, 서버 연결 없음 등 치명적인 오류인 경우:
"Error executing action "{action name}". 이유: {0}''.format(error.Stacktrace)

  • 사용자 이름 + 비밀번호와 PAT가 모두 제공되지 않은 경우:
print 'Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!'
일반

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.