Microsoft SQL Server(MSSQL)

네트워크 트래픽 암호화

Looker 애플리케이션과 데이터베이스 사이에 네트워크 트래픽을 암호화하는 것이 가장 좋습니다. 안전한 데이터베이스 액세스 사용 설정 문서 페이지에 설명된 옵션 중 하나를 고려해 보세요.

SSL 암호화를 사용하려면 Microsoft 문서를 참조하세요.

서버 인증 구성

Looker에서는 MSSQL 서버에 'SQL Server 인증'을 요구합니다. MSSQL 서버가 'Windows 통합 인증'으로만 구성된 경우 서버 구성을 'Windows 통합 인증 및 SQL Server 인증'으로 변경합니다.

서버 구성이 제대로 설정되지 않을 경우 Looker에서 연결할 수 없습니다. 'SQL 인증을 사용한 로그인 시도에 실패했습니다. 서버가 Windows 인증으로만 구성됩니다.'와 같은 SQL Server 로그 메시지가 표시됩니다.

변경해야 할 경우 다음 단계를 수행하면 됩니다.

  1. SQL Server Management Studio 객체 탐색기에서 서버를 마우스 오른쪽 버튼으로 클릭한 다음 속성을 클릭합니다.
  2. 보안 페이지의 서버 인증에서 새 서버 인증 모드를 선택한 다음 확인을 클릭합니다.
  3. SQL Server Management Studio 대화상자에서 확인을 클릭하여 SQL Server를 다시 시작하기 위한 요구사항을 확인합니다.
  4. 객체 탐색기에서 서버를 마우스 오른쪽 버튼으로 클릭한 다음 다시 시작을 클릭합니다. SQL Server 에이전트가 실행 중인 경우에도 다시 시작해야 합니다.

자세한 내용은 Microsoft 문서에서 확인할 수 있습니다.

Looker 사용자 만들기

Looker는 SQL 서버 인증을 사용하여 데이터베이스를 인증합니다. 도메인 계정 사용은 지원되지 않습니다.

계정을 만들려면 다음 명령어를 실행합니다. some_password_here를 고유하고 안전한 비밀번호로 변경합니다.

CREATE LOGIN looker
  WITH PASSWORD = 'some_password_here';
USE MyDatabase;
CREATE USER looker FOR LOGIN looker;
GO

Looker 사용자에게 테이블의 SELECT 권한 부여

Looker에서는 쿼리할 각 테이블 또는 스키마에 대한 SELECT 권한이 필요합니다. SELECT 권한을 할당하는 방법에는 여러 가지가 있습니다.

  • 개별 스키마에 SELECT 권한을 부여하려면 각 스키마에 다음 명령어를 실행합니다.

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • 개별 테이블에 SELECT 권한을 부여하려면 각 테이블에 다음 명령어를 실행하세요.

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • MSSQL 버전 2012 이상의 경우 다음 명령어를 사용하여 Looker 사용자에게 db_datareader 역할을 할당할 수도 있습니다.

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Looker 사용자에게 실행 중인 쿼리를 보고 중지할 수 있는 권한 부여

실행 중인 쿼리를 감지하고 중지할 수 있는 권한이 Looker에 있어야 하며, 이를 위해서는 다음 권한이 필요합니다.

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

이러한 권한을 부여하려면 다음 명령어를 실행합니다.

USE Master;
GRANT ALTER ANY CONNECTION TO looker;
GRANT VIEW SERVER STATE to looker;
GO

Looker 사용자에게 테이블을 만들 수 있는 권한 부여

Looker 사용자에게 PDT를 만들 수 있는 권한을 부여하려면 다음 명령어를 실행합니다.

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

임시 스키마 설정

Looker 사용자가 소유한 스키마를 만들고 Looker 사용자에게 필요한 권한을 부여하려면 다음 명령어를 실행합니다.

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Kerberos 인증 구성

MSSQL 데이터베이스에서 Kerberos 인증을 사용하는 경우 다음 섹션에 설명된 대로 Kerberos를 사용하여 연결하도록 Looker를 구성하는 단계를 따르세요.

Kerberos 클라이언트 구성 설정

먼저 여러 소프트웨어를 설치하고 Looker 머신에 여러 파일이 있는지 확인해야 합니다.

Kerberos 클라이언트

kinit를 실행하여 Looker 머신에 Kerberos 클라이언트가 설치되어 있는지 확인합니다. Kerberos 클라이언트가 설치되지 않은 경우 Kerberos 클라이언트의 바이너리를 설치합니다.

예를 들어 Redhat 또는 CentOS의 경우 다음과 같습니다.

sudo yum install krb5-workstation krb5-libs krb5-auth-dialog

자바 8

자바 8은 Looker 머신과 Looker 사용자의 PATHJAVA_HOME에 설치되어 있어야 합니다. 필요한 경우 looker 디렉터리에 로컬로 설치합니다.

자바 암호화 확장 프로그램

  1. Oracle 다운로드 페이지에서 자바 8용 자바 암호화 확장 프로그램(JCE)을 다운로드하고 설치합니다.

    • 자바 설치에 사용되는 jre/lib/security 디렉터리를 찾습니다.
    • 이 디렉터리에서 local_policy.jarUS_export_policy.jar JAR 파일을 삭제합니다.
    • 이 두 파일을 JCE Unlimited Strength Jurisdiction Policy Files 다운로드에 포함된 JAR 파일로 바꿉니다.

    JCE가 설치된 자바 8 이전의 자바 버전을 사용할 수는 있지만 권장하지 않습니다.

  2. 자바 및 source ~/.bash_profile의 올바른 설치를 가리키도록 ~looker/.bash_profileJAVA_HOMEPATH를 업데이트하거나 로그아웃했다가 다시 로그인합니다.

  3. java -version로 자바 버전을 확인합니다.

  4. echo $JAVA_HOME으로 JAVA_HOME 환경 변수를 확인합니다.

gss-jaas.conf

다음 콘텐츠를 사용해 looker 디렉터리에 gss-jaas.conf라는 파일을 만듭니다.

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true;
};

테스트에 필요한 경우 다음과 같이 debug=true를 이 파일에 추가할 수 있습니다.

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true
    debug=true;
};

krb5.conf

Looker를 실행하는 서버에 유효한 krb5.conf 파일도 있어야 합니다. 기본적으로 이 파일은 /etc/krb5.conf에 있습니다. 다른 위치에 있는 경우 환경(셸 환경의 KRB5_CONFIG)에 표시되어야 합니다.

다른 Kerberos 클라이언트 머신에서 복사해야 할 수도 있습니다.

lookerstart.cfg

looker 디렉터리(looker 시작 스크립트가 포함된 디렉터리)에 다음 줄이 포함된 lookerstart.cfg라는 파일을 만들어 gss-jaas.confkrb5.conf 파일을 가리킵니다.

  JAVAARGS="-Djava.security.auth.login.config=/path/to/gss-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=/etc/krb5.conf"
  LOOKERARGS=""

krb5.conf 파일이 /etc/krb5.conf에 없으면 다음 변수도 추가해야 합니다.

  -Djava.security.krb5.conf=/path/to/krb5.conf

디버깅을 위해 다음 변수를 추가합니다.

  -Dsun.security.jgss.debug=true -Dsun.security.krb5.debug=true

그런 다음 ./looker restart를 사용하여 Looker를 다시 시작합니다.

Kerberos를 사용하여 인증

사용자 인증

  1. krb5.conf/etc/에 없는 경우 환경 변수 KRB5_CONFIG를 사용하여 위치를 표시합니다.

  2. klist 명령어를 실행하여 Kerberos 티켓 캐시에 유효한 티켓이 있는지 확인합니다.

  3. 티켓이 없으면 kinit username@REALM 또는 kinit username을 실행하여 티켓을 만듭니다.

  4. Looker와 함께 사용되는 계정은 헤드리스일 가능성이 높으므로 Kerberos에서 keytab 파일을 가져와서 사용자 인증 정보를 저장하면 장기간 사용할 수 있습니다. kinit -k -t looker_user.keytab username@REALM과 같은 명령어를 사용하여 Kerberos 티켓을 얻습니다.

티켓 자동 갱신

Kerberos 티켓 캐시에 활성 티켓을 유지하기 위해 자주 실행되는 크론 작업을 설정합니다. 실행 빈도는 클러스터 구성에 따라 다릅니다. klist는 티켓이 얼마나 빨리 만료되는지를 나타냅니다.

데이터베이스에 대한 Looker 연결 만들기

다음 단계에 따라 Looker에서 데이터베이스로 이어지는 연결을 만듭니다.

  1. Looker의 관리 섹션에서 연결을 선택한 후 연결 추가를 클릭합니다.
  2. 언어 드롭다운 메뉴에서 사용 중인 Microsoft SQL Server 버전을 선택합니다.

  3. 원격 호스트포트: 호스트 이름과 포트를 입력합니다(기본 포트는 1433).

    1433 이외의 기본값이 아닌 포트를 지정하되 데이터베이스에 콜론 대신 쉼표를 사용해야 하는 경우 연결 설정의 추가 JDBC 매개변수 필드에 useCommaHostPortSeparator=true를 추가하면 원격 호스트:포트에 쉼표를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

    jdbc:sqlserver://hostname,1434

  4. 나머지 연결 세부정보를 입력합니다. 대다수의 설정은 대부분의 데이터베이스 언어에 공통적으로 적용됩니다. 자세한 내용은 데이터베이스에 Looker 연결 문서 페이지를 참조하세요.

  5. 제대로 연결되었는지 확인하려면 테스트를 클릭합니다. 문제 해결 정보는 데이터베이스 연결 테스트 문서 페이지를 참조하세요.

  6. 이러한 설정을 저장하려면 연결을 클릭합니다.

Looker 연결 구성

데이터베이스에 Looker 연결 문서 페이지의 안내를 따라 MSSQL 데이터베이스에 대한 연결을 만듭니다. 연결 설정 페이지의 추가 JDBC 매개변수 섹션에서 다음을 추가합니다.

;integratedSecurity=true;authenticationScheme=JavaKerberos

일부 네트워크는 Windows Active Directory용 렐름 1개와 Linux 및 기타 Windows 이외 시스템용 렐름 1개로 이루어진 총 2개의 Kerberos 렐름으로 구성됩니다. 이때 Linux 중심의 렐름과 Active Directory 렐름이 서로 신뢰하도록 구성하는 경우를 '교차 렐름 인증'이라고 합니다.

네트워크에서 교차 렐름 인증을 사용하는 경우 MSSQL 서버의 Kerberos 주 구성원을 명시적으로 지정해야 합니다. 추가 JDBC 매개변수 필드에 다음을 추가합니다.

;serverSpn=service_name/FQDN\:PORT@REALM

FQDNPORT@REALM을 네트워크 정보로 바꿉니다. 예를 들면 다음과 같습니다.

;serverSpn=MSSQLSvc/dbserver.internal.example.com:1433@AD.EXAMPLE.COM

또한 Looker는 연결 설정 페이지의 사용자 이름비밀번호 필드를 입력해야 하지만 Kerberos에서는 필요하지 않습니다. 이 입력란에 더미 값을 입력합니다.

연결을 테스트하여 올바르게 구성되었는지 확인합니다.

기능 지원

Looker가 특정 기능을 지원하려면 데이터베이스 언어도 해당 기능을 지원해야 합니다.

Microsoft SQL Server 2008 이상에서는 Looker 24.10부터 다음 기능을 지원합니다.

특성 지원 여부
지원 수준
통합
Looker(Google Cloud 핵심 서비스)
아니요
대칭 집계
파생 테이블
영구 SQL 파생 테이블
영구 기본 파생 테이블
안정적인 뷰
쿼리 종료
SQL 기반 피벗
시간대
아니요
SSL
소계
JDBC 추가 파라미터
대소문자 구분
아니요
위치 유형
목록 유형
아니요
백분위수
아니요
고유 백분위수
아니요
SQL Runner 표시 프로세스
SQL Runner 설명 테이블
SQL Runner 표시 색인
SQL Runner 선택 10
SQL Runner 카운트
SQL 설명
아니요
OAuth 사용자 인증 정보
아니요
컨텍스트 주석
연결 풀링
아니요
HLL 스케치
아니요
집계 인식
증분 PDT
아니요
밀리초
마이크로초
구체화된 뷰
아니요
대략적인 고유값
No

Microsoft SQL Server 2017 이상에서는 Looker 24.10부터 다음 기능을 지원합니다.

특성 지원 여부
지원 수준
지원됨
Looker(Google Cloud 핵심 서비스)
아니요
대칭 집계
파생 테이블
영구 SQL 파생 테이블
영구 기본 파생 테이블
안정적인 뷰
쿼리 종료
SQL 기반 피벗
시간대
SSL
소계
JDBC 추가 파라미터
대소문자 구분
아니요
위치 유형
목록 유형
아니요
백분위수
아니요
고유 백분위수
아니요
SQL Runner 표시 프로세스
SQL Runner 설명 테이블
SQL Runner 표시 색인
SQL Runner 선택 10
SQL Runner 카운트
SQL 설명
아니요
OAuth 사용자 인증 정보
아니요
컨텍스트 주석
연결 풀링
아니요
HLL 스케치
아니요
집계 인식
증분 PDT
아니요
밀리초
마이크로초
구체화된 뷰
아니요
대략적인 고유값
No

Microsoft SQL Server 2017 이상에서는 Looker 24.10부터 다음 기능을 지원합니다.

특성 지원 여부
지원 수준
지원됨
Looker(Google Cloud 핵심 서비스)
대칭 집계
파생 테이블
영구 SQL 파생 테이블
영구 기본 파생 테이블
안정적인 뷰
쿼리 종료
SQL 기반 피벗
시간대
SSL
소계
JDBC 추가 파라미터
대소문자 구분
아니요
위치 유형
목록 유형
아니요
백분위수
아니요
고유 백분위수
아니요
SQL Runner 표시 프로세스
SQL Runner 설명 테이블
SQL Runner 표시 색인
SQL Runner 선택 10
SQL Runner 카운트
SQL 설명
아니요
OAuth 사용자 인증 정보
아니요
컨텍스트 주석
연결 풀링
아니요
HLL 스케치
아니요
집계 인식
증분 PDT
아니요
밀리초
마이크로초
구체화된 뷰
아니요
대략적인 고유값
아니요