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 doc を参照してください。
3. SSECSecKeyGenerator Delegate - 暗号タイプを
serverSideEncryption-customerProvidedKeys として設定した場合、この委任の実装を記述し、この委任を設定する必要があります。この委任は、暗号タイプが
serverSideEncryption-customerProvidedKeys として設定されている場合にのみ適用されます。この委任にはデフォルトの既成の実装はありません。シークレットキーを管理する委任を記述し、クラスファイルを展開し、このコマンドラインツールを使用して設定します。コンフィギュレーションの詳細については、
Amazon S3 を使用するための Windchill ファイルボルトの設定を参照してください。
サンプルの委任を以下に示します。
SampleSSECSecKeyGenerator.java: このサンプルの実装は、SecretKey を生成する方法を示しています。このサンプルの実装では、既存の SecretKey をサーチしています。見つかった場合、SecretKey が返されます。見つからなかった場合、新しい SecretKey が生成され、ディスク上のファイルに保管された後、返されます。SecretKey を安全に保管する方法をユーザーが指定できます。さらに、このサンプルの実装では、ボルト内のすべてのファイルに 1 つの SecretKey が使用されています。AWS S3 に保管されているバケットまたはオブジェクトの複数の SecretKey を管理するため、独自のアルゴリズムを記述できます。