S3デフォルト暗号化

表題について。

■ 環境

  • AWS S3
  • awscli 1.11.190
  • Mac OSX El Capitan

■ デフォルト暗号化

S3上でデフォルト暗号化がされるようにバケットの設定をすることができる。2017/11頃からであったと記憶している。ManagementConsoleから下記で変更することが可能である。

バケット > プロパティ > デフォルト暗号化

とりあえず”AES-256“を選択した。

`aws`コマンドでオブジェクトをput/getしても特に何もしなくても問題無い。

このManagementConsoleで”デフォルト暗号化”を設定するが、awscliでできるのか?を見てみた。

■ s3

$ aws s3 mb help

マニュアルを見ても、特にオプションと思わしきものはない。”region“を指定することができるくらいのようである。

■ s3api

$ aws s3api create-bucket help

上記では”–create-bucket-configuration“オプションがあるので指定できるのかと思ったのだが、”LocationConstraint“しか指定できないように読める…。その他は権限周りのオプションのようだ。

デフォルト暗号化の設定は後からでも変更できるな、と思い他のサブコマンドも確認してみる。

get-bucket-encryption

$ aws s3api get-bucket-encryption --bucket withsin
{
    "ServerSideEncryptionConfiguration": {
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "AES256"
                }
            }
        ]
    }
}
$

暗号化しているか?は”get-bucket-encryption“サブコマンドで取得できる。ちなみにデフォルト暗号化をしていないバケットに対して同様のコマンドを実行すると下記のようになるようだ。

$ aws s3api get-bucket-encryption --bucket withsin2

An error occurred (ServerSideEncryptionConfigurationNotFoundError) when calling the GetBucketEncryption operation: The server side encryption configuration was not found
$

put-bucket-encryption

$ aws s3api put-bucket-encryption help

どうやらこのサブコマンドで設定することが可能なようである。試してみよう。

$ aws s3api put-bucket-encryption --bucket withsin2 --server-side-encryption-configuration '{
  "Rules": [
    {
      "ApplyServerSideEncryptionByDefault": {
        "SSEAlgorithm": "AES256"
      }
    }
  ]
}'
$
$ aws s3api get-bucket-encryption --bucket withsin2
{
    "ServerSideEncryptionConfiguration": {
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "AES256"
                }
            }
        ]
    }
}
$

上記のように設定ができたようである。

以上。