問題
- S3バケットをDocuments and Mediaのストアとして使用しています。
- 私は、暗号化と x-amz-server-side-encryption ヘッダーの存在を必要とするサービスコントロールポリシーで構成しました、次のようなものです:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUploadOfUnencryptedObjectsToS3Bucket",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": [
"AES256",
"aws:kms"
]
},
"ArnNotLike": {
"aws:PrincipalARN": [
"arn:aws:iam::489415732136:user/test"
]
}
}
}
]
}
- この設定をテストすると、以下のエラーが発生します。
原因: com.liferay.document.library.kernel.exception.AccessDeniedException:{errorCode=AccessDenied, errorType=Client, message=Access Denied(Service:Amazon S3; Status Code:403; エラーコード:AccessDenied; リクエストID:ZE1PKQDWJGJVX9RH; S3 Extended Request ID:JulnMKqJqw0L7gRyUu
o1s9lrChprqu36wPPm1/Tr1ZYRkFL+Hu8Hrq6QFF9/E8d5UxbWNMoHA0U=; Proxy: null), requestId=ZE1PKQDWJGVX9RH, statusCode=403}。
- Liferayがこのx-amz-server-side-encryptionヘッダを提供できているかどうか確認できますでしょうか。
Environment
- 7.4
解決策
- この記事を書いている時点では、Liferayはこのヘッダーを設定しないので、バケットオブジェクトをサーバーサイドで暗号化したい場合は、デフォルトのバケット暗号化を活用する必要があります。
このため、「x-amz-server-side-encryption」ヘッダーの設定が必要なサービスコントロールポリシーが使用できないことも事実です。
-
デフォルトの暗号化を有効にした後にオブジェクトをアップロードする場合:
PUTリクエストヘッダに暗号化情報が含まれていない場合、Amazon S3はバケットのデフォルト暗号化設定を使用してオブジェクトを暗号化します。
PUTリクエストヘッダに暗号化情報が含まれている場合、Amazon S3はPUTリクエストの暗号化情報を使用して、Amazon S3に保存する前にオブジェクトを暗号化します。
- 将来的にLiferayにこの機能を追加する可能性のある機能要求チケットがあります: https://issues.liferay.com/browse/LPS-165937