Amazon EBS のデフォルト暗号化を AWS CLI で設定してみる

2023.04.29

Amazon EC2 には EBS のデフォルト暗号化設定があります。アカウント作成時は下記画像のように無効状態のため、AWS CLI で全リージョンのデフォルト暗号化設定の有効化を試してみました。

試してみた

Amazon EBS のデフォルト暗号化を有効化する設定と、デフォルトの暗号化キーを変更する設定を試してみます。

EBS のデフォルト暗号化の有効化

EBS デフォルト暗号化を有効化するコマンドはenable-ebs-encryption-by-defaultです。


EBS デフォルト暗号化はリージョン毎の設定のため、全リージョンで有効化するコマンド例は下記となります。

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "### Enable ebs encryption by default in ${region}"
  aws ec2 enable-ebs-encryption-by-default --region ${region}
done

実行結果例です(折りたたんでいます)。

実行結果
$ aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
> | while read region; do
>   echo "### Enable ebs encryption by default in ${region}"
>   aws ec2 enable-ebs-encryption-by-default --region ${region}
> done
### Enable ebs encryption by default in ap-south-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in eu-north-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in eu-west-3
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in eu-west-2
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in eu-west-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in ap-northeast-3
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in ap-northeast-2
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in ap-northeast-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in ca-central-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in sa-east-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in ap-southeast-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in ap-southeast-2
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in eu-central-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in us-east-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in us-east-2
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in us-west-1
{
    "EbsEncryptionByDefault": true
}
### Enable ebs encryption by default in us-west-2
{
    "EbsEncryptionByDefault": true
}


設定内容を確認してみます。

EBS デフォルト暗号化の設定状況はget-ebs-encryption-by-defaultコマンドで確認できます。


全リージョンの設定状況を確認するコマンド例は下記となります。

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "### Get ebs encryption by default in ${region}"
  aws ec2 get-ebs-encryption-by-default --region ${region}
done

実行結果例です(折りたたんでいます)。

実行結果
$ aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
> | while read region; do
>   echo "### Get ebs encryption by default in ${region}"
>   aws ec2 get-ebs-encryption-by-default --region ${region}
> done
### Get ebs encryption by default in ap-south-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in eu-north-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in eu-west-3
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in eu-west-2
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in eu-west-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in ap-northeast-3
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in ap-northeast-2
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in ap-northeast-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in ca-central-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in sa-east-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in ap-southeast-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in ap-southeast-2
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in eu-central-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in us-east-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in us-east-2
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in us-west-1
{
    "EbsEncryptionByDefault": true
}
### Get ebs encryption by default in us-west-2
{
    "EbsEncryptionByDefault": true
}


有効化後にマネジメントコンソールで確認すると下記画像のようになります。AWS マネージドキーの設定の画像です。

デフォルトの暗号化キーの変更

EBS デフォルト暗号化を有効にした際のデフォルトの暗号化キーは AWS マネージドキーのalias/aws/ebsが指定されています。デフォルトの暗号化キーは変更できるため、KMS のカスタマーマネージドキー(以下、CMK)を指定してみます。

デフォルトの暗号化キーの変更はmodify-ebs-default-kms-key-idコマンドで設定できます。


本ブログでは、各リージョンにレプリケーションされた KMS の CMK がある状態を前提として設定してみます。マルチリージョンキーについては次のブログが参考になります。


全リージョンで作成済みの CMK のエイリアスalias/ebs-keyを指定してデフォルトの暗号化キーを設定するコマンド例です。なお、kms-key-idオプションでは、キーのエイリアス以外に Key ID や Key ARN も指定できます。

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "### Modify ebs default kms key in ${region}"
  aws ec2 modify-ebs-default-kms-key-id \
    --region ${region} \
    --kms-key-id alias/ebs-key
done

実行結果例です(折りたたんでいます)。

実行結果
$ aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
> | while read region; do
>   echo "### Modify ebs default kms key in ${region}"
>   aws ec2 modify-ebs-default-kms-key-id \
>     --region ${region} \
>     --kms-key-id alias/ebs-key
> done
### Modify ebs default kms key in ap-south-1
{
    "KmsKeyId": "arn:aws:kms:ap-south-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in eu-north-1
{
    "KmsKeyId": "arn:aws:kms:eu-north-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in eu-west-3
{
    "KmsKeyId": "arn:aws:kms:eu-west-3:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in eu-west-2
{
    "KmsKeyId": "arn:aws:kms:eu-west-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in eu-west-1
{
    "KmsKeyId": "arn:aws:kms:eu-west-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in ap-northeast-3
{
    "KmsKeyId": "arn:aws:kms:ap-northeast-3:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in ap-northeast-2
{
    "KmsKeyId": "arn:aws:kms:ap-northeast-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in ap-northeast-1
{
    "KmsKeyId": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in ca-central-1
{
    "KmsKeyId": "arn:aws:kms:ca-central-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in sa-east-1
{
    "KmsKeyId": "arn:aws:kms:sa-east-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in ap-southeast-1
{
    "KmsKeyId": "arn:aws:kms:ap-southeast-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in ap-southeast-2
{
    "KmsKeyId": "arn:aws:kms:ap-southeast-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in eu-central-1
{
    "KmsKeyId": "arn:aws:kms:eu-central-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in us-east-1
{
    "KmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in us-east-2
{
    "KmsKeyId": "arn:aws:kms:us-east-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in us-west-1
{
    "KmsKeyId": "arn:aws:kms:us-west-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Modify ebs default kms key in us-west-2
{
    "KmsKeyId": "arn:aws:kms:us-west-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}


デフォルトの暗号化キーの設定を確認してみます。

デフォルトの暗号化キーの設定状況はget-ebs-default-kms-key-idコマンドで確認できます。


全リージョンのデフォルトの暗号化キーを確認するコマンド例です。

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "### Get ebs default kms key in ${region}"
  aws ec2 get-ebs-default-kms-key-id --region ${region}
done

実行結果例です(折りたたんでいます)。設定しているキーは Key ARN で出力されます。

実行結果
$ aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
> | while read region; do
>   echo "### Get ebs default kms key in ${region}"
>   aws ec2 get-ebs-default-kms-key-id --region ${region}
> done
### Get ebs default kms key in ap-south-1
{
    "KmsKeyId": "arn:aws:kms:ap-south-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in eu-north-1
{
    "KmsKeyId": "arn:aws:kms:eu-north-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in eu-west-3
{
    "KmsKeyId": "arn:aws:kms:eu-west-3:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in eu-west-2
{
    "KmsKeyId": "arn:aws:kms:eu-west-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in eu-west-1
{
    "KmsKeyId": "arn:aws:kms:eu-west-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in ap-northeast-3
{
    "KmsKeyId": "arn:aws:kms:ap-northeast-3:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in ap-northeast-2
{
    "KmsKeyId": "arn:aws:kms:ap-northeast-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in ap-northeast-1
{
    "KmsKeyId": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in ca-central-1
{
    "KmsKeyId": "arn:aws:kms:ca-central-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in sa-east-1
{
    "KmsKeyId": "arn:aws:kms:sa-east-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in ap-southeast-1
{
    "KmsKeyId": "arn:aws:kms:ap-southeast-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in ap-southeast-2
{
    "KmsKeyId": "arn:aws:kms:ap-southeast-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in eu-central-1
{
    "KmsKeyId": "arn:aws:kms:eu-central-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in us-east-1
{
    "KmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in us-east-2
{
    "KmsKeyId": "arn:aws:kms:us-east-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in us-west-1
{
    "KmsKeyId": "arn:aws:kms:us-west-1:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}
### Get ebs default kms key in us-west-2
{
    "KmsKeyId": "arn:aws:kms:us-west-2:111122223333:key/mrk-1beee7f4ae30416883a54ed96example"
}


以上で、Amazon EBS のデフォルト暗号化の設定は終わりです。

さいごに

Amazon EBS のデフォルト暗号化設定を試してみる機会がありましたので、ブログにしてみました。

このブログがどなたかのご参考になれば幸いです。