Amazon S3 마운트에 대한 암호화 사용자 정의
이 단원에서는 컨텐트를 암호화된 형식으로 Amazon S3에 저장하는 암호화 사용자 정의에 대해 설명합니다. 기본적으로 Amazon S3에 저장되는 컨텐트는 serverSideEncryption-s3 암호화 유형을 사용하여 암호화됩니다. 파일 기반 보관소에 저장되는 컨텐트는 일반 형식으로 저장됩니다.
* 
암호화 옵션은 사용자가 관리합니다. 암호화 옵션을 변경해도 컨텐트는 액세스 가능한 상태여야 합니다.
Amazon S3의 컨텐트 암호화를 사용자 정의하려면 다음과 같이 대리인 구현을 작성하십시오.
1. S3 암호화 구성자 대리인 - 암호화 유형을 선택할 대리인을 입력합니다. 다른 암호화 유형을 사용하려면 필요한 암호화 유형을 반환하는 대리인을 작성해야 합니다. 또한 주 사이트 및 등록된 파일 서버(복제본 사이트)에 클래스 파일을 배포하고 명령줄 도구를 사용하여 구성해야 합니다. 대리인의 기본값은 com.ptc.windchill.objectstorage.amazons3.encryption.DefaultS3EncryptConfigurator입니다. 기본 대리인은 암호화 유형을 serverSideEncryption-s3로 반환합니다. 다른 암호화 유형을 사용하려면, 필요한 암호화 유형을 반환하는 대리인을 작성하고 클래스 파일을 배포한 후 이 명령줄 도구를 사용하여 구성해야 합니다. 다른 암호화 유형을 사용하려면, 필요한 암호화 유형을 반환하는 대리인을 작성해야 합니다. 구성에 대한 자세한 내용은 Amazon S3를 사용하도록 Windchill 파일 보관소 구성을 참조하십시오.
다음은 샘플 대리인입니다.
SampleS3EncryptConfigurator.java:
SampleS3EncryptConfigurator는 암호화 유형으로 serverSideEncryption-kms를 반환합니다. Amazon S3에 저장되는 컨텐트가 KMS 암호화를 사용하여 암호화됩니다. API getS3EncryptionType은 버킷 이름 및 객체 키를 인수로 받습니다. 버킷 이름과 객체 키를 사용하여 암호화 유형을 프로그래밍할 수 있습니다. 예를 들어, 버킷 b1에 대해 암호화 유형으로 serverSideEncryption-kms를 반환하고 버킷 b2에 대해 암호화 유형으로 serverSideEncryption-s3을 반환할 수 있습니다.
암호화 유형으로 적합한 값은 다음과 같습니다.
a. serverSideEncryption-s3 - 컨텐트가 AWS S3 관리 키와 함께 서버측 암호화를 사용하여 저장됩니다.
b. serverSideEncryption-kms - 컨텐트가 AWS KMS 관리 키와 함께 서버측 암호화를 사용하여 저장됩니다.
c. serverSideEncryption-customerProvidedKeys - 컨텐트가 고객 제공 키와 함께 서버측 암호화를 사용하여 저장됩니다.
2. SSEKMSKeyProvider Delegate - Amazon S3의 컨텐트를 암호화하는 동안 KMS 키 ID를 식별할 대리인을 입력합니다. 이 대리인은 암호화 유형이 serverSideEncryption-kms로 구성된 경우 적용 가능합니다. Windchill에서는 이 대리인의 기본 구현을 제공합니다. 기본 구현은 영역과 관련된 기본 AWS KMS 키 ID를 사용합니다. 다른 KMS 키 ID를 사용하려면 이 대리인에 대한 구현을 작성하고 해당 구현을 선택하도록 대리인을 구성해야 합니다. 이 대리인은 암호화 유형이 serverSideEncryption-kms로 구성된 경우 적용 가능합니다. 대리인의 기본 제공 값은 com.ptc.windchill.objectstorage.amazons3.encryption.ssekms.DefaultSSEKMSKeyProvider입니다. 기본 대리인이 어떠한 KMS 키 ID도 반환하지 않는 경우, 기본 AWS KMS 키 ID가 암호화에 사용됩니다. 사용자 자신의 KMS 키 ID를 사용하려면, 필요한 KMS 키 ID를 반환하는 대리인을 작성하고 클래스 파일을 배포한 후 이 명령줄 도구를 사용하여 구성해야 합니다. 구성에 대한 자세한 내용은 Amazon S3를 사용하도록 Windchill 파일 보관소 구성을 참조하십시오.
* 
생산 환경에서는 이 구현을 있는 그대로 사용하지 마십시오.
샘플 대리인은 다음과 같습니다.
SampleSSEKMSKeyProvider.java:이 샘플 구현에서는 특정 영역에 대해 KMS 키 ID를 반환하는 방법을 보여 줍니다. 여기서는 먼저 AmazonS3Client 객체를 가져옵니다. AmamzonS3Client를 사용하여 지정된 버킷 이름에 대한 위치 및 영역을 읽어들입니다. 이에 대한 자세한 내용은 AWS Java 설명서를 참조하십시오.
3. SSECSecKeyGenerator Delegate - 암호화 유형을 serverSideEncryption-customerProvidedKeys로 구성할 경우 이 대리인에 대한 구현을 작성하고 대리인을 구성해야 합니다. 이 대리인은 암호화 유형이 serverSideEncryption-customerProvidedKeys로 구성된 경우에만 적용 가능합니다. 이 대리인에 대한 기본 제공 구현은 없습니다. 보안 키를 관리하는 대리인을 작성하고 클래스 파일을 배포한 후 이 명령줄 도구를 사용하여 구성합니다. 구성에 대한 자세한 내용은 Amazon S3를 사용하도록 Windchill 파일 보관소 구성을 참조하십시오.
샘플 대리인은 다음과 같습니다.
SampleSSECSecKeyGenerator.java: SecretKey 생성 방법을 보여 주는 샘플 구현입니다. 이 샘플 구현은 기존 SecretKey를 검색합니다. SecretKey를 찾으면 반환됩니다. 그렇지 않으면 새 SecretKey를 생성하고 디스크의 파일에 저장한 후 반환합니다. SecretKey를 안전하게 저장할 전략을 결정할 수 있습니다. 또한 이 샘플 구현에서는 보관소의 모든 파일에 대해 단일 SecretKey를 사용합니다. AWS S3에 저장된 버킷 또는 객체에 대한 여러 SecretKey를 관리하는 고유한 알고리즘을 작성할 수 있습니다.
도움이 되셨나요?