데이터 암호화

기본적으로 다음 데이터는 하이브리드 런타임 영역에 암호화됩니다.

  • 데이터 캐시
  • 계약 핵심 데이터
  • 키 관리 시스템(KMS) 데이터
  • 키-값 맵(KVM) 데이터

데이터 암호화는 특별한 구성이 필요하지 않습니다. 하지만 기본 키를 대체하는 자체 암호화 키를 사용하고 싶은 경우 이 주제에 설명된 대로 하면 됩니다.

암호화 키 범위

Apigee Hybrid 암호화 키에는 범위가 있습니다. 예를 들어 KMS 키에는 조직 범위가 있습니다. 이는 키가 전체 조직의 KMS 데이터를 암호화하는 데 사용됨을 의미합니다. 다음 표에는 각 키 유형의 범위가 나열되어 있습니다.

암호화 키 범위
계약 조직만
KMS 조직만
KVM 조직 또는 환경

KVM 정책apiproxy 또는 policy(API 프록시 버전) 범위를 지정하면, 조직 수준 키가 데이터를 암호화하는 데 사용됩니다. Apigee Edge에서 KVM을 사용하는 방법에 대한 일반적인 개요는 키-값 맵 다루기를 참조하세요.

캐시 환경만

기본 암호화 키 정보

기본적으로 Apigee Hybrid는 계약, KVM, KMS, 캐시 데이터를 암호화하는 데 사용되는 Base64 인코딩 키 모음을 제공합니다. Apigee Hybrid 설치 프로그램은 런타임 영역에 키를 Kubernetes 보안 비밀로 저장하고 이를 사용하여 AES-128 표준 암호화로 데이터를 암호화합니다. 키는 개발자가 제어할 수 있으며, 하이브리드 관리 영역을 항상 인식하지 못합니다.

기본 키는 만들 때 생성되는 모든 새로운 Apigee Hybrid 구성요소에 적용됩니다.

기본 암호화 키 변경

필수는 아니지만 기본 암호화 키를 원하는 경우 변경할 수 있습니다. 하나 이상의 기본 키를 바꾸려면 다음 단계를 따르세요.

  1. 다음 스탠자를 재정의 파일에 복사합니다. 이 구성을 통해 조직 수준의 KMS 및 KVM 암호화 키와 환경 수준의 KVM 및 캐시 암호화 키를 변경할 수 있습니다.
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
        contractEncryptionKey: base64-encoded-key
    
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. 교체할 키마다 새 키를 생성하세요. 각 키는 정확히 16, 24, 32바이트 길이인 Base64로 인코딩된 문자열이어야 합니다. 인코딩된 키를 만드는 방법도 참조하세요.
  3. 기본 키를 새 키로 바꿉니다. 이 예시에서 모든 기본 키가 각기 해당하는 새 키로 바뀝니다.
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
        contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="

기본 키 재정의

재정의 파일에 이름이 지정된 조직 또는 특정 환경의 키를 재정의할 수 있습니다. 구성요소를 만들 때 조직 또는 개별 환경에 지정하는 키가 기본값을 재정의합니다.

  1. 다음 스탠자를 재정의 파일에 복사합니다. 이 구성을 통해 조직 수준의 KMS 및 KVM 암호화 키와 환경 수준의 KVM 및 캐시 암호화 키를 변경할 수 있습니다.
    org:YOUR_ORG_NAME
    
    kmsEncryptionKey: base64-encoded-key
    kvmEncryptionKey: base64-encoded-key
    contractEncryptionKey: base64-encoded-key
    
    envs
      - name: ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
    
      - name: 2ND_ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. 재정의할 키마다 새 키를 생성합니다. 각 키는 정확히 16, 24, 32바이트 길이인 Base64로 인코딩된 문자열이어야 합니다. 인코딩된 키를 만드는 방법도 참조하세요.
  3. 재정의할 키를 지정합니다. 이 예시에서 모든 기본 키가 각기 해당하는 새 키로 바뀝니다.
    org:hybrid-org
    
    kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
    kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
    contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: prod
        kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: test
        kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="
    

주요 변경사항 적용

다음 Helm 명령어에서와 같이 클러스터에 재정의 파일을 적용합니다.
  • 조직의 계약 키 또는 KVM 키를 변경하는 경우 조직을 업데이트합니다.
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  • 환경의 캐시 키 또는 KVM 키를 변경하는 경우 환경을 업데이트합니다.
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE.yaml
    
  • KMS 키를 변경하는 경우 조직과 환경 모두 업데이트합니다.
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

이전 버전과의 호환성에 대한 참고사항

Apigee Hybrid를 처음 설치할 때 재정의 파일에서 암호화 키를 삭제한 경우 암호화를 효과적으로 사용 중지할 수 있으며 값은 암호화되지 않은 상태로 저장됩니다. 나중에 키를 제공하여 암호화를 사용 설정하면 종료되는 데이터는 암호화되지 않은 상태로 유지됩니다. 그러나 이후에 추가되는 데이터는 모두 암호화됩니다. 시스템은 암호화되지 않은 데이터와 새로운 암호화된 데이터와 함께 정상적으로 계속 작동합니다.

또한 런타임 데이터가 암호화되면 나중에 암호화 키를 변경할 수 없습니다.

인코딩된 키를 만드는 방법

KVM, KMS, 캐시 암호화에는 올바른 형식의 Base-64 인코딩 키가 필요합니다. 이러한 용도로 사용되는 키는 아래에 설명된 대로 16, 24 또는 32바이트 길이의 문자열에서 Base-64로 인코딩되어야 합니다.

다음 예시 명령어는 무작위 생성되고 Base64로 인코딩된 32자의 적합한 문자열을 생성합니다.

head -c 32 /dev/random | openssl base64