임베디드 분석을 위한 보안 권장사항

Looker 임베디드 분석을 사용하면 사용자와 고객이 HTML 형식의 웹페이지, 포털 또는 애플리케이션에서 iframe에 삽입된 데이터를 살펴볼 수 있습니다. iframe은 전체 Looker 애플리케이션을 실행하고 쿼리를 표시하는 데 필요한 데이터만 요청합니다. iframe은 외부 웹사이트 또는 애플리케이션에서 데이터를 읽거나 쓸 수 없도록 설계되었습니다.

데이터를 삽입할 경우 개인 정보 보호 또는 보안 문제가 발생할 수 있습니다. 이러한 문제를 완화하려면 Looker 관리자가 다음 권장사항을 따르는 것이 좋습니다.

  • 고객에게 Looker 콘텐츠를 삽입하는 경우 내부 분석에 사용하는 인스턴스와 별도의 Looker 인스턴스에 고객 콘텐츠를 설정합니다.
  • Looker 삽입 인스턴스에만 데이터를 연결하여 일반인일 수 있는 삽입 사용자가 액세스할 수 있어야 합니다.
  • 공개 삽입 URL 내에서 임의 토큰을 사용자 인증 정보처럼 보호하고 공개 URL이 사용되지 않으면 중지합니다.
  • 할당된 external_user_id 값은 특정 권한, 사용자 속성, 모델 집합마다 고유해야 합니다. 상호작용하는 여러 사용자들에게 서로 다른 삽입 세션에서 동일한 external_user_id를 사용해서는 안 됩니다. 다양한 권한, 사용자 속성 값 또는 모델 액세스 권한을 가진 단일 사용자에게 동일한 external_user_id를 사용해서도 안 됩니다.
  • 폐쇄형 시스템을 사용 설정합니다.
  • 서명된 삽입 보안 비밀을 삽입된 Looker 인스턴스에 대한 관리자 사용자 인증 정보처럼 보호하고, 서명된 삽입을 사용하지 않는 경우 이를 중지된 상태로 유지합니다.
  • 삽입된 Looker 인스턴스에 강력한 인증을 사용합니다(서명된 삽입, SAML, Google OAuth, 2FA).
  • 쿠키 없는 삽입을 사용하는 경우 삽입 애플리케이션 호스트 서버에서만 액세스할 수 있도록 세션 참조 토큰을 보호합니다. 세션 참조 토큰이 브라우저에 노출되어서는 안 됩니다.
  • 쿠키 없는 삽입을 사용하고 쿠키가 없는 세션을 획득할 때 허용되는 삽입 도메인을 설정하는 경우 삽입 사용자 브라우저의 출처를 신뢰해서는 안 됩니다. 항상 삽입 애플리케이션 서버에서 삽입 사용자의 신뢰할 수 있는 출처에 삽입 사용자를 매핑합니다.

Looker는 데이터에 액세스하는 사용자에게 필요한 인증 수준에 따라 다양한 유형의 삽입 방법(공개, 비공개, 서명된 삽입)을 제공합니다. 이러한 방법 중 하나로 자바스크립트를 사용하여 iframe과 상호작용할 수 있습니다.

공개 삽입

Looks의 공개 액세스 옵션을 사용 설정하면 HTML iframe 태그를 사용하여 외부 웹사이트에 시각화 또는 데이터 테이블을 삽입할 수 있습니다. Look URL을 공개적으로 공유하거나 Google 또는 Excel 스프레드시트 애플리케이션으로 데이터를 가져올 수도 있습니다.

iframe 태그 내의 URL과 삽입 URL은 임의의 토큰을 포함하고 있으며 추측할 수 없습니다. 그러나 삽입 URL이 있는 사용자는 누구나 데이터에 액세스할 수 있으며 추가 필터링 또는 제한사항이 적용되지 않습니다. 공개 URL을 사용 설정하기 전에 특정 Look의 공개 URL을 만들고 공유하는 경우 보안에 미치는 영향을 고려하는 것이 좋습니다.

공개 URL 및 공개 삽입 URL은 만료되지 않으며 취소할 수 없습니다. 공개 URL을 공유하면 실제 데이터가 아닌 쿼리를 공유하게 됩니다.

비공개 삽입

Look에 대한 공개 액세스를 허용하지 않으려는 경우 콘텐츠를 보려면 Looker 로그인이 필요하도록 Look, Explore 또는 대시보드를 iframe에서 비공개로 삽입할 수 있습니다.

인증된 사용자는 할당된 Looker 권한에 따라 지정된 콘텐츠에만 액세스할 수 있습니다. Looker에서 권한을 변경해도 삽입 URL은 변경되지 않지만 사용자가 URL에 액세스했을 때 허용되는 항목이 변경될 수 있습니다.

사용자가 인증되지 않은 경우 iframe에 오류나 로그인 화면을 표시할 수 있습니다. 하지만 iframe의 로그인 화면 사용 설정은 Looker의 동일 출처 보호와 호환되지 않습니다.

비공개 삽입 URL은 만료되지 않으며 취소할 수 없습니다. 하지만 링크는 Looker 인스턴스와 데이터에 액세스할 수 있는 사용자에게만 작동하므로 링크를 전송하면 보안 문제가 발생하지 않습니다.

서명된 삽입

이 기능의 라이선스를 업데이트하려면 Google Cloud 영업 전문가에게 문의하세요.

서명된 삽입은 한 단계 더 발전된 비공개 삽입입니다. 서명된 삽입에서는 사용자가 Looker 사용자 계정을 사용하여 인증할 필요가 없습니다. 대신 iframe에서 URL을 사용하여 자체 애플리케이션을 통해 인증할 수 있습니다. 인증은 새 브라우저 세션을 만들고 브라우저에 쿠키를 생성합니다.

사용자 권한, 식별자, 속성은 모두 보안 비밀 키로 서명된 URL 내의 매개변수로 전달됩니다. 보안 비밀 키에 대한 액세스 권한이 있는 모든 사용자가 사용자 유형 및 권한에 관계없이 Looker 인스턴스가 연결된 모든 모델에 액세스할 수 있는 URL을 만들 수 있습니다. 서명된 URL을 생성하는 방법은 예시 코드를 참조하세요.

클릭잭킹은 다른 작업을 수행하는 것처럼 보이는 버튼과 같이 삽입된 코드 또는 스크립트가 사용자 몰래 또는 동의 없이 기능을 실행하는 경우 발생할 수 있는 브라우저 보안 문제입니다. 클릭잭킹에는 일반적으로 정적 URL이 필요합니다. 서명된 삽입에 대해 생성된 URL은 보안 비밀이며 삽입을 보는 사용자만 이를 가져야 합니다. 서명된 삽입을 사용해도 외부 웹사이트에 대한 클릭잭킹 위험이 증가하지 않습니다.

서명된 삽입 매개변수

iframe URL에 포함된 매개변수는 삽입 사용자에게 표시되지만 수정할 수는 없습니다. 그 사실 관계에는 다음이 포함될 수 있습니다.

  • user_attributes: 데이터를 추가로 필터링하는 데 사용됩니다. user_attributes는 강력하므로 Looker 인스턴스에 적용하는 방법을 고려하세요.
  • session_length: 필요한 최소 시간으로 유지합니다.

user_attributes와 같은 일부 매개변수는 UI에서 숨길 수 있지만 여전히 삽입 URL에 인코딩됩니다. 예를 들어 비밀번호가 사용자의 user_attribute에 포함된 값인 경우 바람직하지 않을 수 있습니다. 이 문제를 해결하는 한 가지 방법은 임시 그룹을 만들고 비밀번호를 그룹 수준 속성으로 설정한 다음 삽입 URL에 그룹 ID를 전달하는 것입니다. 삽입 세션 이후 그룹을 삭제하여 과도한 만료된 그룹을 방지할 수 있습니다.

URL의 서명된 부분에는 타임스탬프가 포함됩니다. URL이 로그인에 사용되면 해당 시간이 현재 시간으로부터 +/- 5분이어야 합니다. URL을 사용하여 로그인할 때 삽입 세션이 지속될 수 있는 시간을 session_length에서 지정할 수 있습니다.

서명된 삽입 액세스 관리

삽입된 콘텐츠의 URL을 빌드하는 경우:

  • 필요한 가장 낮은 수준의 권한을 사용합니다.
  • 사용자가 액세스할 수 있어야 하는 특정 모델에만 액세스 권한을 할당합니다.
  • group_ids를 사용하여 사용자를 그룹에 할당하고 삽입 사용자가 Looker 폴더에 대한 액세스를 제어하도록 허용합니다.

Looker API

Looker의 API를 사용하면 프록시 애플리케이션 또는 리버스 프록시 서버를 사용하여 삽입된 콘텐츠에 대한 액세스를 사용 설정할 수 있습니다. 이 시나리오에서는 API 인증을 사용하여 인증을 수행합니다. API 키는 특정 사용자에게 연결되며, 이를 생성하는 사용자와 동일한 권한을 갖습니다. API 키는 클라이언트 ID와 클라이언트 보안 비밀번호 키로 구성됩니다.

API를 사용한 삽입 액세스 관리

Looker API를 사용하여 삽입된 콘텐츠에 대한 액세스를 사용 설정할 때 다음을 수행하는 것이 좋습니다.

  • 필요한 최소 권한 집합으로 프로그래매틱 API 액세스를 위한 전용 서비스 계정을 만듭니다.
  • API 키를 구성하는 클라이언트 ID 및 클라이언트 보안 비밀번호를 보호합니다(SDK로 인증하는 경우).

API를 사용하여 삽입 사용자용으로 설정되었지만 서명된 삽입 URL에 지정되지 않은 모든 사용자 속성은 다음에 서명된 삽입 URL에 액세스할 때 기본값으로 재설정됩니다.

삽입된 자바스크립트 이벤트

(공개적으로, 비공개적으로, 서명된 삽입 또는 API를 통해)을 삽입 iframe을 설정한 후 자바스크립트를 사용하여 이 iframe과 상호작용할 수 있습니다. 작업 중인 정보가 실제로 Looker의 iframe에서 가져온 것인지 확인하려면 자바스크립트 이벤트를 리슨하면 됩니다.

허용 목록에 도메인을 추가할 때 와일드 카드를 사용하여 특정 하위 도메인만 자바스크립트 이벤트에 액세스하도록 허용합니다.

자바스크립트 eval 함수를 사용하는 경우 eval 인수의 문자열 값이 Looker 서버 또는 CDN과 같은 신뢰할 수 있는 소스에서 가져온 것이고 HTTPS로 전송되어야 합니다.

고객 데이터는 Looker CDN을 거치지 않습니다. CDN에서는 Looker 웹 애플리케이션 정적 애셋(자바스크립트 코드, HTML 페이지, CSS 스타일)만 제공됩니다.

고객 호스팅 배포

자체 Looker 인스턴스를 호스팅하는 것은 데이터, 특히 삽입된 콘텐츠에 대한 액세스를 잠그는 장애로부터 안전한 방법처럼 보일 수 있습니다. 그러나 사용자가 인터넷을 통해 삽입 URL에 액세스해야 하는 경우 Looker를 직접 호스팅할 때의 특별한 이점이 없습니다.

고객 호스팅 배포는 다음과 같은 경우에 가장 적합할 수 있습니다.

  • 사용자가 인터넷을 사용하여 Looker에 액세스할 필요가 없습니다.
  • Looker를 프런트엔드에 두고 API를 사용해 삽입된 콘텐츠에 액세스합니다.