콘텐츠 보안 정책

Tableau Server는 CSP(콘텐츠 보안 정책) 표준을 지원합니다. CSP는 사이트 간 스크립팅 및 기타 악의적인 웹 기반 공격에 대한 추가 보안 계층입니다. CSP는 HTTP 응답 헤더로 구현되며, 이 헤더를 사용하여 스크립트 및 이미지와 같은 외부 리소스를 안전하게 로드할 수 있는 위치를 지정할 수 있습니다.

CSP에 대한 자세한 내용은 Mozilla 웹 사이트(링크가 새 창에서 열림)를 참조하십시오.

CSP 구성 및 사용하도록 설정

CSP는 tsm configuration set 옵션 명령을 사용하여 구성하고 사용하도록 설정합니다. 분산 배포에서 Tableau Server를 실행하는 경우 클러스터의 초기 노드에서 이러한 명령을 실행합니다. tsm pending-changes apply를 실행하면 클러스터 전체에 구성이 적용됩니다.

1단계: 기본 지시문 설정

Tableau Server에는 아래 테이블에 기본 지시문 집합이 포함되어 있습니다.

지시문을 설정하려면 다음 tsm 구문을 사용하십시오.

tsm configuration set -k content_security_policy.directive.<directive_name> -v "<value>"

예를 들어 connect_src 지시문을 설정하려면 다음 명령을 실행합니다.

tsm configuration set -k content_security_policy.directive.connect_src -v "* unsafe-inline"

옵션기본값

설명

content_security_policy.directive.default_src‘none’

다른 fetch 지시문에 대한 대체 지시문으로 사용됩니다.

default_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.connect_src*

스크립트 인터페이스를 사용하여 로드할 수 있는 URL을 제한합니다.

connect_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.script_src*

JavaScript의 유효한 원본을 지정합니다.

script_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.style_src* ‘unsafe-inline’

스타일시트의 유효한 원본을 지정합니다.

style_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.img_src* data:

이미지 및 파비콘의 유효한 원본을 지정합니다.

img_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.font_src* data:

@font-face를 사용하여 로드된 글꼴의 유효한 원본을 지정합니다.

font_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.frame_src* data:

<frame> 및 <iframe>과 같은 요소를 사용하여 로드하는 중첩된 탐색 컨텍스트의 유효한 원본을 지정합니다.

frame_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.object_srcdata:

<object>, <embed> 및 <applet> 요소에 대한 유효한 원본을 지정합니다.

object_src의 유효한 값(링크가 새 창에서 열림).

content_security_policy.directive.report_uri/vizql/csp-report

사용자 에이전트에 CSP 위반 시도를 보고하도록 지시합니다. 이러한 위반 보고서는 HTTP POST 요청을 통해 지정된 URI에 전송된 JSON 문서로 구성됩니다.

report_uri의 유효한 값(링크가 새 창에서 열림).

2단계: 다른 지시문 추가(선택 사항)

Tableau Server에 포함된 기본 지시문은 CSP에서 지원하는 지시문의 하위 집합입니다.

지원되는 CSP 지시문의 전체 목록을 보려면 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy(링크가 새 창에서 열림)로 이동하십시오.

content_security_policy.directive 네임스페이스에 새 지시문을 추가하는 방식으로 기존 기본 집합에 지시문을 추가할 수 있습니다. 새 지시문을 추가할 때 --force-keys 매개 변수를 포함해야 합니다. 구문은 다음과 같습니다.

tsm configuration set -k content_security_policy.directive.<new_directive_name> -v "<value>" --force-keys

예를 들어 worker-src(링크가 새 창에서 열림) 지시문을 추가하려면 다음 명령을 실행합니다.

tsm configuration set -k content_security_policy.directive.worker-src -v "none" --force-keys

3단계: 보고 전용 지시문 지정(선택 사항)

일부 지시문을 보고하고 다른 지시문을 적용하도록 CPS를 구성할 수 있습니다. content_security_policy.report_only_enable가 true로 설정되어 있어도 content_security_policy.enforce_enabled를 true로 설정하면 모든 지시문이 적용됩니다.

지시문을 "report-only"로 지정하고 적용하지 않으려면 report_only_directive 네임스페이스에 지시문을 추가합니다. 새 지시문을 추가할 때 --force-keys 매개 변수를 포함해야 합니다. 구문은 다음과 같습니다.

tsm configuration set -k content_security_policy.report_only_directive.<directive_name> -v "<value>" --force-keys

예를 들어 script_src 지시문을 보고 전용으로 설정하려면 다음 명령을 실행합니다.

tsm configuration set -k content_security_policy.report_only_directive.script_src -v " http://*.example.com" --force-keys

4단계: Tableau Server에서 CSP를 사용하도록 설정

지시문을 구성한 후 Tableau Server에서 CSP를 사용하도록 설정합니다.

다음 옵션은 설정한 지시문에 대해 적용 또는 보고 전용 모드를 사용하도록 설정하는 데 사용됩니다.

옵션기본값

설명

content_security_policy.enforce_enabledfalse

모든 위반이 브라우저에서 적용되도록 모든 요청에 CSP 헤더를 추가합니다.

content_security_policy.report_only_enabledtrue모든 위반이 vizql-client 로그에 기록되지만 브라우저에서 적용되지 않도록 모든 요청에 CSP 헤더를 추가합니다.

지정한 CSP 지시문을 적용하도록 설정하려면 다음 명령을 실행합니다.

tsm configuration set -k content_security_policy.enforce_enabled -v true

5단계: tsm pending-changes apply 실행

CSP 구성을 마쳤으면 tsm pending-changes apply를 실행합니다.

보류 중인 변경 내용을 적용하려면 서버를 다시 시작해야 하는 경우 pending-changes apply 명령은 서버가 다시 시작됨을 알리는 메시지를 표시합니다. 서버가 중지된 경우에도 이 메시지가 표시되지만 이 경우 다시 시작은 없습니다. --ignore-prompt 옵션을 사용하여 이 메시지를 표시하지 않을 수 있지만 다시 시작 동작은 변경되지 않습니다. 변경 내용을 적용해도 다시 시작할 필요가 없는 경우 메시지 없이 변경 내용이 적용됩니다. 자세한 내용은 tsm pending-changes apply를 참조하십시오.

CSP 보고서 보기

지정된 비주얼리제이션에 대한 CSP 위반을 보려면 개발자 도구가 포함된 브라우저에서 비주얼리제이션을 로드합니다. 이 예에서는 Chrome 브라우저를 사용합니다.

  1. CSP를 구성한 Tableau Server 배포에서 호스팅되는 위반을 사용하여 테스트 비주얼리제이션을 로드합니다.

  2. CTRL+Shift+I를 입력하여 Chrome의 개발자 도구를 엽니다.

  3. Network(네트워크) 탭을 클릭합니다.

  4. Filter(필터) 필드에 csp-report를 입력한 다음 Find All(모두 찾기)을 클릭합니다.

    • 위반이 없는 경우 검색에서 CSP 보고서가 반환되지 않습니다.

    • 위반이 있는 경우 결과 패널에서 Headers(헤더) 탭을 클릭하고 맨 아래로 스크롤하여 Request Payload(페이로드 요청)를 표시합니다.

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!