Looker의 암호화 키 변경

Looker는 AES-256 Galois/Counter Mode(GCM) 암호화를 사용하여 데이터를 내부적으로 암호화합니다. 모든 데이터 항목은 고유 데이터 키를 사용하여 암호화되며 서명이 확인된 버전인 암호화 봉투가 포함되어 있어 인증이 보장됩니다. 이 모드를 사용하려면 외부 고객 마스터 키(CMK)를 사용해야 합니다. CMK는 키 암호화 키(KEK)를 가져오고, 암호화, 복호화하는 데 사용되며, KEK는 데이터 키를 가져오고, 암호화, 복호화하는 데 사용됩니다.

기존 암호화를 사용하는 고객 호스팅 설치는 내부 데이터베이스를 AES-256 GCM 암호화로 이전해야 합니다. 신규 고객이 호스팅하는 설치는 AES-256 GCM 암호화를 위해 설치를 구성해야 합니다. AES-256 GCM 암호화를 위해 고객이 호스팅하는 설치를 마이그레이션하거나 구성하는 방법에 관한 안내는 AES-256 GCM 암호화 사용 문서 페이지를 참고하세요.

CMK를 변경하거나 로컬 키 기반 구성에서 AWS KMS 구성으로(또는 그 반대로) 이동하려면 새 CMK를 만들고 AES-256 GCM 암호화를 입력하면 됩니다.

키 재지정은 오프라인에서 이루어지므로 Looker 인스턴스를 종료해야 합니다. 클러스터링된 Looker 인스턴스의 경우 클러스터의 모든 노드를 종료해야 합니다.

키를 재지정하면 쿼리 결과 캐시를 포함하여 전체 Looker 온디스크 캐시가 무효화됩니다. 따라서 키 재지정을 완료한 후 인스턴스를 시작하면 클라이언트 데이터베이스에 평소보다 많은 부하가 발생할 수 있습니다.

AES-256 GCM 암호화 키를 재지정하려면 다음 절차를 따르세요.

  1. Looker 중지 및 전체 백업 만들기
  2. _SOURCE_DESTINATION 환경 변수 설정
  3. rekey 명령어 실행
  4. 새 환경 변수 설정
  5. Looker 시작

Looker 중지 및 전체 백업 만들기

다음 명령어를 실행합니다.

cd looker
./looker stop
tar -zcvf /tmp/looker-pre-encrypt.tar.gz  /home/lookerops/looker --exclude=.cache --exclude=log --exclude=.tmp --exclude=.snapshots --exclude=looker.jar --exclude=authorized_keys --exclude=dr-log --exclude=core

Looker 애플리케이션 데이터를 저장하기 위해 외부 MySQL 데이터베이스를 실행하는 경우 데이터베이스를 개별적으로 백업합니다. 데이터베이스가 MySQL 인스턴스이면 스냅샷을 만듭니다. 데이터베이스가 비교적 작으므로 몇 분 정도만 걸립니다.

Looker가 클러스터링된 경우 계속하기 전에 모든 노드를 중지해야 합니다.

cd looker
./looker stop

나중에 rekey 명령어를 실행할 때 노드가 계속 실행 중이면 명령어가 실패하고 다음 메시지가 표시됩니다. "이 백엔드 Looker 데이터베이스에 연결된 다른 라이브 노드가 있습니다. Looker가 최근 1분 내에 종료된 경우 잠시 후 다시 시도하세요. 그렇지 않으면 클러스터의 모든 노드가 종료되어 있는지 확인합니다."

_SOURCE_DESTINATION 환경 변수 설정

처음에 Looker 인스턴스가 AES-256 GCM 암호화로 이전되거나 구성될 때 Looker가 CMK를 찾을 수 있는 위치를 나타내는 환경 변수가 하나 이상 생성되었습니다. 이러한 변수는 AWS KMS 사용 여부에 따라 달라집니다.

키 재지정 작업은 현재 AWS KMS를 사용하고 있는지, 키 재지정 후 AWS KMS를 사용할지 여부에 따라 추가 환경 변수를 사용합니다. _SOURCE 서픽스가 있는 환경 변수는 Looker가 현재 CMK를 찾을 수 있는 위치를 나타내고, _DESTINATION 서픽스가 있는 환경 변수는 키 재지정 작업 후에 Looker가 CMK를 찾을 수 있는 위치를 나타냅니다.

_SOURCE 변수 설정

현재 구성이 AWS KMS를 사용하는지 여부에 따라 다음 절차 중 하나를 수행하세요.

현재 AWS KMS를 사용하는 경우

처음에 AWS KMS를 사용하여 암호화를 구성한 경우 다음 환경 변수 중 하나 또는 둘 다를 만들었습니다.

  • LKR_AWS_CMK: AWS CMK_alias를 저장합니다.
  • LKR_AWS_CMK_EC: AWS KMS 키 저장소와 함께 사용되는 암호화 컨텍스트를 정의하는 선택적 변수입니다.

환경 변수를 다시 만듭니다.

export LKR_AWS_CMK=alias/<CMK_alias>
export LKR_AWS_CMK_EC=<encryption_context>

그런 다음 _SOURCE 변수를 만듭니다. _SOURCE 접미사를 사용하여 다음과 같은 새 변수를 설정합니다.

export LKR_AWS_CMK_SOURCE=alias/<CMK_alias>
export LKR_AWS_CMK_EC_SOURCE=<encryption_context>

현재 AWS KMS를 사용하지 않는 경우

처음에 AWS 이외의 KMS를 사용하여 암호화를 구성한 경우 CMK를 환경 변수에 저장하는지 아니면 인스턴스의 파일에 저장하는지에 따라 다음 환경 변수 중 하나를 만들었습니다.

  • LKR_MASTER_KEY_ENV: CMK를 환경 변수에 저장하면 CMK가 저장됩니다.
  • LKR_MASTER_KEY_FILE: CMK를 파일에 저장하면 CMK가 포함된 파일의 경로와 파일 이름이 저장됩니다.

구성에 사용된 환경 변수를 다시 만듭니다.

export LKR_MASTER_KEY_FILE=<path_to_key_file>

또는

export LKR_MASTER_KEY_ENV=<CMK_value>

그런 다음 _SOURCE 변수를 만듭니다.

CMK를 파일에 저장하는 경우 다음 변수를 만듭니다.

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

환경 변수에 CMK를 저장하는 경우 다음 변수를 만듭니다.

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

_DESTINATION 변수 설정

키 재지정 작업 후 AWS KMS 사용 여부에 따라 다음 절차 중 하나를 수행합니다.

새 구성에 AWS KMS 사용

새 구성에서 AWS KMS를 사용하는 경우 새 CMK 위치를 나타내는 다음 환경 변수를 만듭니다.

export LKR_AWS_CMK_DESTINATION=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC_DESTINATION=<new_encryption_context>

새 구성에 AWS KMS 사용하지 않음

새 구성에서 AWS KMS를 사용하지 않는 경우 LKR_MASTER_KEY_FILE_DESTINATION 또는 LKR_MASTER_KEY_ENV_DESTINATION 변수를 사용하여 CMK 대상을 지정할 수 있습니다.

CMK를 파일에 저장하려면 다음 명령어를 실행합니다.

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

또는 환경 변수를 사용하여 CMK를 저장하려면 다음 명령어를 실행합니다.

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

rekey 명령어 실행

다음 명령어를 실행합니다.

./looker rekey

Looker 인스턴스가 데이터베이스 사용자 인증 정보가 포함된 YAML 파일 경로를 제공하는 -d <db.yaml> 또는 --internal-db-creds=<db.yaml> 시작 옵션으로 시작되는 경우 rekey 명령어에 동일한 옵션을 포함해야 합니다.

예를 들면 java -jar looker.jar rekey -d /path/file/db.yaml입니다.

새 환경 변수 설정

다음 환경 변수 중 하나 이상을 새 구성에 맞게 설정합니다.

새 구성에서 AWS KMS를 사용하는 경우:

export LKR_AWS_CMK=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC=<new_encryption_context>

새 구성에서 AWS KMS를 사용하지 않고 CMK를 환경 변수에 저장하는 경우:

export LKR_MASTER_KEY_ENV=<CMK_value>

새 구성에서 AWS KMS를 사용하지 않고 CMK를 파일에 저장하는 경우:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

로컬에 저장된 키에서 AWS KMS로 또는 AWS KMS에서 로컬로 저장된 키로 이동한 경우 이전 구성의 환경 변수가 필요하지 않습니다. 이전 환경 변수를 삭제합니다.

로컬에 저장된 키에서 AWS KMS로 이동한 경우:

unset LKR_MASTER_KEY_FILE

AWS KMS에서 로컬에 저장된 키로 이동한 경우:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Looker 시작

다음 명령어를 실행합니다.

./looker start