【Security Hub】 リソースの削除保護を有効化しよう(ELB.6,RDS.7,RDS.8)

記事タイトルとURLをコピーする

こんにちは。AWS CLIが好きな福島です。

はじめに

今回は、Security Hubでチェックされるリソースの削除保護の対応方法について、ブログに記載いたします。

Security Hubでチェックされるのは以下の3つ(ELB.6,RDS.7,RDS.8)になりますが、今回はおまけでEC2の削除保護についても記載しております。

削除保護について

AWSでは、誤った削除を防ぐために削除保護の機能が付いているサービスがあります。

設定も簡単にできるため、本番環境など重要なリソースについては、本機能を有効化しておくことをお勧めいたします。

各サービスごとの削除保護について

ではここから各サービスごとの削除保護の対応方法について記載いたします。

EC2の削除保護について

EC2は削除保護ではなく、終了保護という項目になります。
また停止保護と似た名前もあるため、注意が必要です。

GUI

対象のインスタンスを右クリックし、「終了保護を変更」を押下します。

有効化にチェックを付け、OKを押下します。

CLI

  • 終了保護の設定を確認するコマンド
aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId]" --output text | while read line
do     
   result=$(aws ec2 describe-instance-attribute \
   --attribute disableApiTermination \
   --instance-id $(echo $line | awk '{print $2}') \
   --query "[DisableApiTermination.Value]" --output text)
   echo $line $result
done | column -t

◆実行結果例

#  aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId]" --output text | while read line
> do
>    result=$(aws ec2 describe-instance-attribute \
>    --attribute disableApiTermination \
>    --instance-id $(echo $line | awk '{print $2}') \
>    --query "[DisableApiTermination.Value]" --output text)
>    echo $line $result
> done | column -t
fk-linux-jira      i-xxxxxxxxxxxxxxxxx  True
fk-windows         i-xxxxxxxxxxxxxxxxx  False
fk-linux           i-xxxxxxxxxxxxxxxxx  False
#

⇒Trueが返ってきた場合、終了保護が有効になっています。

  • 終了保護を有効化するコマンド
aws ec2 modify-instance-attribute \
--disable-api-termination \
--instance-id [対象のインスタンスID]

RDSの削除保護について

GUI

対象のRDSをチェックし、「変更」を押下します。

「削除保護の有効化」をチェックし、「続行」を押下します。

「次回の定期メンテナンス期間中に適用」にチェックを付け、「インスタンスの変更」を押下します。 ※削除保護の設定は即時に変更されます。(再起動は発生しません。)

CLI

  • RDSの削除保護を確認するコマンド
aws rds describe-db-instances \
--query "DBInstances[].[DBInstanceIdentifier,DeletionProtection]" \
--output text

◆実行結果例

#  aws rds describe-db-instances \
> --query "DBInstances[].[DBInstanceIdentifier,DeletionProtection]" \
> --output text
fk-jira False
fk-test-aurora-instance-1       False
fk-test-rds     True
#

⇒Trueが返ってきた場合、終了保護が有効になっています。

  • RDSの削除保護を有効化するコマンド
aws rds modify-db-instance \
--db-instance-identifier [対象のRDS識別子] \
--deletion-protection \
--no-apply-immediately

Auroraの削除保護について

GUI

対象のAuroraを選択し、「変更」を押下します。

「削除保護の有効化」をチェックし、「続行」を押下します。

「次回の定期メンテナンス期間中に適用」にチェックを付け、「クラスターの変更」を押下します。 ※削除保護の設定は即時に変更されます。(再起動は発生しません。)

CLI

  • Auroraの削除保護を確認するコマンド
aws rds describe-db-clusters \
--query "DBClusters[].[DBClusterIdentifier,DeletionProtection]" \
--output text

◆実行結果例

#  aws rds describe-db-clusters \
> --query "DBClusters[].[DBClusterIdentifier,DeletionProtection]" \
> --output text
fk-test-aurora  True
#

⇒Trueが返ってきた場合、終了保護が有効になっています。

  • Auroraの削除保護を有効化するコマンド
aws rds modify-db-cluster \
--db-cluster-identifier [対象のAurora識別子] \
--deletion-protection \
--no-apply-immediately

ALBの削除保護について

GUI

対象のELB上で右クリックし、「属性の編集」を押下します。 削除保護にチェックを付けます。

CLI

  • ELBの削除保護設定を確認するコマンド
for elb_arn in $(aws elbv2 describe-load-balancers --query "LoadBalancers[].LoadBalancerArn" --output text)
do
   elb_arn_esc=$(echo ${elb_arn#*/} | sed 's/\//\\\//g')
   aws elbv2 describe-load-balancer-attributes \
   --load-balancer-arn $elb_arn \
   --query "Attributes[]" \
   --output text | sed -e s/^/$elb_arn_esc,/g -e 's/\t/,/g'
done | grep deletion_protection.enabled

◆実行結果例

#  for elb_arn in $(aws elbv2 describe-load-balancers --query "LoadBalancers[].LoadBalancerArn" --output text)
> do
>    elb_arn_esc=$(echo ${elb_arn#*/} | sed 's/\//\\\//g')
>    aws elbv2 describe-load-balancer-attributes \
>    --load-balancer-arn $elb_arn \
>    --query "Attributes[]" \
>    --output text | sed -e s/^/$elb_arn_esc,/g -e 's/\t/,/g'
> done | grep deletion_protection.enabled
app/fk-test-alb-001/xxxxxxxxxxx,deletion_protection.enabled,false
app/fk-test-alb-002/xxxxxxxxxxx,deletion_protection.enabled,false
#

⇒Trueが返ってきた場合、終了保護が有効になっています。

  • 削除保護を有効化するコマンド
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn [ALBのARN] \
--attributes Key=deletion_protection.enabled,Value=true

終わりに

今回はSecurity Hubでチェックされる削除保護関連の対応方法について記載いたしました。
今後も、Security Hubでチェックされる項目の対応方法についてまとめていきたいと思います。

どなたかのお役に立てれば幸いです。

福島 和弥 (記事一覧)

SRE3課

2019/10 入社

AWS CLIが好きです。