Loading
Salesforce 조직 설정 및 유지 관리
검색 및 데이터베이스 암호화용 BYOK 암호 생성을 위한 스크립트 샘플

검색 및 데이터베이스 암호화용 BYOK 암호 생성을 위한 스크립트 샘플

검색 및 데이터베이스 암호화용 BYOK 자료를 업로드하는 데 도움이 되는 스크립트가 제공되었습니다. 검색을 위한 업로드 가능한 DEK 또는 데이터베이스 암호화를 위한 업로드 가능한 테넌트 암호를 만듭니다. 스크립트는 무작위 번호를 암호로 생성하고 인증서의 공개 키를 사용하여 암호를 암호화합니다.

필수 Edition

Salesforce Classic(일부 조직에서 사용할 수 없음) 및 Lightning Experience 모두에서 사용할 수 있습니다.
지원 제품: Salesforce Shield 또는 Shield Platform Encryption 라이센스가 있는 Enterprise, PerformanceUnlimited Edition.
무료로 Developer Edition에서 사용할 수 있습니다.
노트
노트 암호를 BYOK 키로 한 번만 사용할 수 있습니다. 여러 BYOK 키가 필요한 경우(예: 검색에 대해 하나, 데이터베이스 암호화에 대해 하나) 각 키에 대해 고유한 암호를 사용해야 합니다. 또한 이 스크립트는 테넌트 암호에 대한 BYOK 자료를 만드는 데 사용하는 스크립트와 다릅니다. 이 중 하나를 생성해야 하는 경우 "BYOK 테넌트 암호 생성을 위한 샘플 스크립트"를 참조하십시오.

이 스크립트를 사용하려면 먼저 BYOK 호환 인증서를 생성하고 세션 토큰을 생성해야 합니다. 데이터베이스 암호화 및 검색 색인 암호화의 경우 자체 서명 인증서만 필요합니다.

스크립트는 검색 색인 또는 데이터베이스 암호화용 BYOK로 사용할 수 있도록 업로드할 준비가 된 payload.bin이라는 단일 파일을 만듭니다. 이 유형의 BYOK 키 자료에 대한 요구 사항에 따라 래핑 및 인코딩됩니다. 검색 색인 암호화용 DEK와 데이터베이스 암호화용 테넌트 암호를 만듭니다.

  1. 스크립트가 포함된 파일을 만들고 앞서 다운로드한 인증서 및 세션 토큰 파일과 같은 디렉터리에 저장합니다.
  2. 스크립트가 chmod 775로 실행 가능한지 확인합니다.
    기본적으로 임시 파일은 삭제되지 않습니다. 스크립트의 마지막 줄에 대한 코멘트를 삭제하여 자동으로 삭제합니다.
  3. 인증서 이름 및 세션 토큰 파일을 지정하는 스크립트를 실행합니다. 예를 들어 스크립트 2025_search_secretgen.sh의 이름을 지정하고 인증서 파일의 이름이 2025_search.crt인 경우 다음을 실행합니다. ./2025_search_secretgen.sh 2025_search.crt.
  4. 스크립트는 payload.bin이라는 이름의 파일을 생성합니다.
    이전에 만든 자체 서명 인증서의 세션 토큰 파일과 payload.bin을 업로드합니다.
예

2025_search_secretgen.sh 파일 내용. Linux 또는 MacOS 시스템에서 이 스크립트를 실행할 수 있습니다.

이 스크립트는 BYOK(Bring Your Own Key)라는 프로세스를 사용하여 Salesforce Shield Platform Encryption에 대한 보안 키를 생성합니다. Salesforce 인증서에서 공개 키를 추출하여 시작합니다. 임시 키 하나와 "고객" 키 하나의 두 가지 임의 AES 키를 만듭니다. 임시 키는 공개 키 및 강력한 암호화 스키마(SHA-512 포함 RSA-OAEP)를 사용하여 암호화됩니다. 그런 다음, 이 암호화된 임시 키는 다른 암호화 스키마(패딩 포함 AES 키 래핑)를 사용하여 고객 키를 래핑하는 데 사용됩니다. 마지막으로 스크립트는 암호화된 임시 키와 래핑된 고객 키를 단일 페이로드에 결합하고 base64 형식으로 인코딩합니다. 그러면 Salesforce에 페이로드를 업로드하여 중요한 데이터를 안전하게 암호화할 수 있습니다.

#!/bin/bash
set -euo pipefail

CERT_IN="$1"
OPENSSL="openssl"

# Extract public key from X.509 certificate
$OPENSSL x509 -in "$CERT_IN" -pubkey -noout > byok_public_key.pem

# Generate a random temporary AES key (256 bits)
$OPENSSL rand -out temp_aes_key.bin 32

# Encrypt the temp AES key using RSA-OAEP with SHA-512
$OPENSSL pkeyutl -encrypt \
  -pubin \
  -inkey byok_public_key.pem \
  -in temp_aes_key.bin \
  -out temp_key_wrapped.bin \
  -pkeyopt rsa_padding_mode:oaep \
  -pkeyopt rsa_oaep_md:sha512 \
  -pkeyopt rsa_mgf1_md:sha512

# Generate the actual target AES key to be wrapped
$OPENSSL rand -out target_aes_key.bin 32

# Convert temp AES key to hex format for the -K parameter
KEY_HEX=$(hexdump -v -e '/1 "%02x"' < temp_aes_key.bin)

# AES Key Wrap with Padding using OpenSSL 3.x
$OPENSSL enc -id-aes256-wrap-pad \
  -iv A65959A6 \
  -K "$KEY_HEX" \
  -in target_aes_key.bin \
  -out target_key_wrapped.bin

# Combine both parts into final payload
cat temp_key_wrapped.bin target_key_wrapped.bin > payload.bin

# Cleanup
rm "$CERT_IN" byok_public_key.pem temp_aes_key.bin target_aes_key.bin temp_key_wrapped.bin target_key_wrapped.bin
 
로드 중
Salesforce Help | Article