이 문서에서는 Cassandra 데이터베이스에 저장된 개발자 앱 소비자 보안 비밀 (클라이언트 사용자 인증 정보)의 암호화를 사용 설정하는 방법을 설명합니다.
개요
기존에는 프라이빗 클라우드용 Apigee Edge에서 키-값 맵(KVM) 데이터 및 OAuth 액세스 토큰에 대한 선택적 암호화를 제공했습니다.
다음 표에서는 Apigee for Private Cloud의 저장 데이터 암호화 옵션을 설명합니다.
| 항목 | 기본적으로 사용 설정되는 암호화 | 암호화 사용 가능(선택사항) | 관련 문서 |
| KVM | 아니요 | 예 | 암호화된 KVM 정보를 참조하세요. |
| OAuth 액세스 토큰 | 아니요 | 예 | 보안 강화를 위한 토큰 해싱을 참고하세요. |
| 개발자 앱 고객 보안 비밀 | 아니요 | 예 | 사용 설정하려면 이 문서의 구성 단계를 수행하세요. |
클라이언트 사용자 인증 정보의 암호화를 사용 설정하려면 모든 메시지 프로세서 및 관리 서버 노드에서 다음 작업을 수행해야 합니다.
- 키 암호화 키(KEK)를 저장할 키 저장소를 만듭니다. Apigee는 이 암호화된 키를 사용하여 데이터를 암호화하는 데 필요한 보안 비밀 키를 암호화합니다.
- 모든 관리 서버 및 메시지 프로세서 노드에서 구성 속성을 수정합니다.
- 키 생성을 트리거하는 개발자 앱을 만듭니다.
- 노드를 다시 시작합니다.
이 문서에서는 이러한 작업을 설명합니다.
키 암호화 기능에 대해 알아야 할 사항
이 문서의 단계에서는 Apigee가 Cassandra 데이터베이스에 저장된 개발자 앱 소비자 보안 비밀을 암호화하는 데 사용되는 보안 비밀 키를 암호화할 수 있는 KEK 기능을 사용 설정하는 방법을 설명합니다.
기본적으로 데이터베이스의 기존 값은 변경되지 않고 (일반 텍스트로) 이전과 같이 계속 작동합니다.
암호화되지 않은 항목에 쓰기 작업을 수행하면 작업이 저장될 때 암호화됩니다. 예를 들어 암호화되지 않은 토큰을 취소한 후 나중에 승인하면 새로 승인된 토큰이 암호화됩니다.
키를 안전하게 보호하기
KEK가 저장된 키 저장소의 사본을 안전한 위치에 저장해야 합니다. 자체 보안 메커니즘을 사용하여 키 저장소 사본을 저장하는 것이 좋습니다. 이 문서의 안내에 설명된 대로 로컬 구성 파일이 참조할 수 있는 각 메시지 프로세서 및 관리 서버 노드에 키 저장소를 배치해야 합니다. 하지만 안전한 보관과 백업을 위해 키 저장소의 사본을 다른 곳에 저장하는 것도 중요합니다.
키 암호화 사용 설정
고객 보안 비밀 키 암호화를 사용하려면 다음 단계를 따르세요.
기본 요건
이 문서의 단계를 수행하기 전에 다음 요구사항을 충족해야 합니다.
- 프라이빗 클라우드용 Apigee Edge 4.50.00.10 이상을 설치하거나 업그레이드해야 합니다.
- 프라이빗 클라우드용 Apigee Edge 관리자여야 합니다.
1단계: 키 저장소 생성
다음 단계에 따라 키 암호화 키 (KEK)를 보관할 키 저장소를 만듭니다.
- 다음 명령어를 실행하여 KEK를 암호화하는 데 사용할 키를 저장하는 키 저장소를 생성합니다. 명령어를 표시된 대로 정확하게 입력합니다. 원하는 키 저장소 이름을 입력할 수 있습니다.
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
메시지가 표시되면 비밀번호를 입력합니다. 이 비밀번호는 이후 섹션에서 관리 서버 및 메시지 프로세서를 구성할 때 사용합니다.
이 명령어는 별칭이 KEYSTORE_NAME인 키가 포함된 kekstore.p12 키 저장소 파일을 생성합니다.
- (선택사항) 다음 명령어를 사용하여 파일이 올바르게 생성되었는지 확인합니다. 파일이 올바르면 명령어가 별칭이 KEYSTORE_NAME인 키를 반환합니다.
keytool -list -keystore kekstore.p12
2단계: 관리 서버 구성
다음으로 관리 서버를 구성합니다. 여러 노드에 관리 서버가 설치되어 있는 경우 각 노드에서 이 단계를 반복해야 합니다.
- 1단계에서 생성한 키 저장소 파일을 관리 서버 노드의 디렉터리(예:
/opt/apigee/customer/application)에 복사합니다. 예를 들면 다음과 같습니다.cp certs/kekstore.p12 /opt/apigee/customer/application
apigee사용자가 파일을 읽을 수 있는지 확인합니다.chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
/opt/apigee/customer/application/management-server.properties에 다음 속성을 추가합니다. 파일이 없으면 만듭니다. 속성 파일 참조도 참고하세요.
conf_keymanagement_kmscred.encryption.enabled=true # Fallback is true to ensure your existing plaintext credentials continue to work conf_keymanagement_kmscred.encryption.allowFallback=true conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME # These could alternately be set as environment variables. These variables should be # accessible to Apigee user during bootup of the Java process. If environment # variables are specified, you can skip the password configs below. # KMSCRED_ENCRYPTION_KEYSTORE_PASS= # KMSCRED_ENCRYPTION_KEK_PASS= See also Using environment variables for configuration properties. conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD
키 저장소를 생성하는 데 사용된 도구에 따라
KEK_PASSWORD가KEYSTORE_PASSWORD와 동일할 수 있습니다.- 다음 명령어를 사용하여 관리 서버를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready
관리 서버가 준비되면
wait_for_ready명령어는 다음 메시지를 반환합니다.Checking if management-server is up: management-server is up.
- 여러 노드에 관리 서버가 설치되어 있는 경우 각 관리 서버 노드에서 위의 1~4단계를 반복합니다.
3단계: 개발자 앱 만들기
관리 서버가 업데이트되었으므로 클라이언트 사용자 인증 정보 데이터를 암호화하는 데 사용되는 키 생성을 트리거하는 개발자 앱을 만들어야 합니다.
- 개발자 앱을 만들어 데이터 암호화 키 (KEK) 생성을 트리거합니다. 자세한 단계는 앱 등록을 참조하세요.
- 원하는 경우 개발자 앱을 삭제합니다. 암호화 키가 생성되면 이 파일을 보관할 필요가 없습니다.
4단계: 메시지 프로세서 구성
메시지 프로세서에서 암호화가 사용 설정될 때까지 런타임 요청은 암호화된 사용자 인증 정보를 처리할 수 없습니다.
- 1단계에서 생성한 키 저장소 파일을 메시지 프로세서 노드의 디렉터리(예:
/opt/apigee/customer/application)에 복사합니다. 예를 들면 다음과 같습니다.cp certs/kekstore.p12 /opt/apigee/customer/application
apigee사용자가 파일을 읽을 수 있는지 확인합니다.chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
/opt/apigee/customer/application/message-processor.properties에 다음 속성을 추가합니다. 파일이 없으면 만듭니다. 속성 파일 참조도 참고하세요.conf_keymanagement_kmscred.encryption.enabled=true # Fallback is true to ensure your existing plaintext credentials continue to work conf_keymanagement_kmscred.encryption.allowFallback=true conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME # These could alternately be set as environment variables. These variables should be # accessible to Apigee user during bootup of the Java process. If environment # variables are specified, you can skip the password configs below. # KMSCRED_ENCRYPTION_KEYSTORE_PASS= # KMSCRED_ENCRYPTION_KEK_PASS= See also Using environment variables for configuration properties. conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD
키 저장소를 생성하는 데 사용된 도구에 따라
KEK_PASSWORD가KEYSTORE_PASSWORD와 동일할 수 있습니다.- 다음 명령어를 사용하여 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
메시지 프로세서가 메시지를 처리할 준비가 되면
wait_for_ready명령어는 다음 메시지를 반환합니다.Checking if message-processor is up: message-processor is up.
- 여러 노드에 메시지 프로세서가 설치되어 있는 경우 각 메시지 프로세서 노드에서 1~4단계를 반복합니다.
요약
이제부터 만드는 모든 개발자 앱은 Cassandra 데이터베이스에 저장된 사용자 인증 정보 보안 비밀이 암호화됩니다.
구성 속성에 환경 변수 사용
또는 환경 변수를 사용하여 다음 메시지 프로세서 및 관리 서버 구성 속성을 설정할 수 있습니다. 설정된 경우 환경 변수는 메시지 프로세서 또는 관리 서버 구성 파일에 설정된 속성을 재정의합니다.
conf_keymanagement_kmscred.encryption.keystore.pass= conf_keymanagement_kmscred.encryption.kek.pass=
해당 환경 변수는 다음과 같습니다.
export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD
이러한 환경 변수를 설정하면 메시지 프로세서 및 관리 서버 노드의 구성 파일에서 이러한 구성 속성이 무시되므로 생략할 수 있습니다.
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
속성 파일 참조
이 섹션에서는 이 문서의 앞부분에서 설명한 대로 모든 메시지 프로세서 및 관리 서버 노드에 설정해야 하는 구성 속성을 설명합니다.
| 속성 | 기본값 | 설명 |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
키 암호화를 사용 설정하려면 true여야 합니다.
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
기존 일반 텍스트 사용자 인증 정보가 계속 작동하도록 allowFallback을 true로 설정합니다.
|
conf_keymanagement_kmscred.encryption.keystore.path
|
해당 사항 없음 | 메시지 프로세서 또는 관리 서버 노드에서 KEK 키 저장소의 경로를 제공합니다. 2단계: 관리 서버 구성 및 3단계: 메시지 프로세서 구성을 참조하세요. |
conf_keymanagement_kmscred.encryption.kek.alias
|
해당 사항 없음 | KEK가 키 저장소에 저장되는 별칭입니다. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
해당 사항 없음 | 환경 변수를 사용하여 이러한 속성을 설정하는 경우 선택사항입니다. 구성 속성에 환경 변수 사용도 참조하세요. |
conf_keymanagement_kmscred.encryption.kek.pass
|
해당 사항 없음 | 환경 변수를 사용하여 이러한 속성을 설정하는 경우 선택사항입니다. 구성 속성에 환경 변수 사용도 참조하세요. |