ThingWorx Flow > ThingWorx Flow 설치 및 관리 > ThingWorx Flow 관리 > ThingWorx Flow 암호화 키 회전
ThingWorx Flow 암호화 키 회전
ThingWorx Flow 내에서는 연결, 승인 및 워크플로 작업을 포함한 중요 데이터가 암호화됩니다. 이전에 암호화된 데이터도 계속 사용할 수 있으면서 이러한 작업 수행에 사용되는 암호화 키를 변경해야 할 수도 있습니다. 다음 단계에서는 새 암호화 키를 설정하는 방법을 설명합니다.
온프레미스 배포 절차
1. 키 이름 및 보안 등의 새 키 쌍을 생성합니다.
키 이름은 원하는 대로 지정할 수 있습니다.
보안의 길이는 16의 배수여야 합니다. 가장 간단한 방법은 GUID 생성기를 사용하여 보안을 만드는 것입니다.
* 
GUID에 하이픈(-)를 포함하지 않아야 합니다.
이 예에서 키는 newkey이며 값은 0EE0D33AC67E4389AB2B46123729B875입니다.
2. 키 파일을 암호 해독합니다.
a. flow-installer 디렉터리로 이동한 다음 settings.json 파일에서 sec_key를 복사합니다. 키 도구가 이를 나중에 사용합니다.
b. ThingWorxFlow 디렉터리로 이동합니다.
c. 다음 명령을 실행하여 키 도구를 연결합니다.
cd /d C:\ThingWorxFlow\cryptography\tw-security-common-nodejs
npm link
d. 다음 명령을 실행하여 키 파일을 임시 파일로 암호 해독합니다.
cd /d C:\ThingWorxFlow
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext "keys.dec" --encrypted "cryptography\keys.enc" decrypt
e. 이 예에서 일반 텍스트 파일에 새 키를 추가합니다(예: keys.dec). RabbitMQ 및 Postgres에 대한 연결 정보는 이 파일에 저장됩니다.
f. 다음 명령을 실행하여 임시 파일을 키 파일로 암호화합니다.
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext"keys.dec"--encrypted "cryptography\keys.enc" encrypt
g. 임시 파일 keys.dec를 삭제합니다.
3. 각 Flow 서비스에 대해 다음 단계를 사용하여 암호화 키 이름 및 값을 구성합니다.
a. deploymentConfig.json 파일을 편집합니다.
b. ACTIVE_ENCRYPTION_KEY 속성을 새 키 이름으로 설정합니다.
예를 들어, 새 키 이름이 "newkey"라고 가정하면 deploymentConfig.json에 다음이 포함되어야 합니다.
{
"ACTIVE_ENCRYPTION_KEY": "newkey"
}
4. ThingWorx Flow 서비스를 다시 시작합니다.
클라우드 또는 가상 비공개 클라우드 절차
1. 키 이름 및 보안 등의 새 키 쌍을 생성합니다.
키 이름은 원하는 대로 지정할 수 있습니다.
보안의 길이는 16의 배수여야 합니다. 가장 간단한 방법은 GUID 생성기를 사용하여 보안을 만드는 것입니다.
* 
GUID는 하이픈(-)을 포함하지 않아야 합니다.
이 예에서 키는 newkey이며 값은 0EE0D33AC67E4389AB2B46123729B875입니다.
2. 키 보안 파일을 찾습니다. ThingWorx Flow 배포에는 키 보안(제목이 <릴리즈 이름>-keys로 지정됨)가 포함됩니다. 이 보안에는 oldEncKeys.json에 저장된 JSON 구조의 활성 암호화 키와 이전 암호화 키가 모두 포함됩니다. 올바른 보안을 찾으려면 다음 명령을 실행합니다.
kubectl get secrets
3. 다음 명령을 실행하여 편집할 보안 파일을 엽니다.
kubectl edit secret <release name>-keys
보안 파일에는 다음을 비롯한 다양한 엔트리가 포함되어 있습니다.
ENCRYPTION_KEY:QVNERkdISktMMTIzNDU2Nw==
ACTIVE_ENCRYPTION_KEY_NAME:bXlrZXk=
oldEncKeys.json:e30=
4. Base64는 ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAMEoldEncKeys.json 엔트리의 현재 값을 디코딩합니다. 이 예에서는 다음과 같습니다.
ENCRYPTION_KEY의 경우 QVNERkdISktMMTIzNDU2Nw== 값이 ASDFGHJKL1234567로 디코딩됩니다.
ACTIVE_ENCRYPTION_KEY_NAME의 경우 bXlrZXk= 값이 mykey로 디코딩됩니다.
oldEncKeys.json의 경우 e30= 값이 {}로 디코딩됩니다.
5. Base64는 ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAMEoldEncKeys.json 엔트리에 대한 새 값을 인코딩합니다. 이 예에서는 다음과 같습니다.
ENCRYPTION_KEY의 경우 0EE0D33AC67E4389AB2B46123729B875 값이 MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=로 인코딩됩니다.
ACTIVE_ENCRYPTION_KEY_NAME의 경우 newkey 값이 bmV3a2V5로 인코딩됩니다.
oldEncKeys.json의 경우 JSON 형식의 이전 키 쌍 {"mykey":"ASDFGHJKL1234567"}eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9로 인코딩됩니다.
6. 보안 파일에 새 값을 입력하고 파일을 저장합니다.
ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. 모든 흐름 컨테이너를 다시 시작합니다.