RDS DBインスタンスでのスナップショットへのタグの自動コピー設定について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。
今回は、Amazon RDS (Relational Database Service) DBインスタンスで、スナップショットへのタグの自動コピーが有効になっていない状態について、そのリスクと対策を解説します。

リスク
Amazon RDSは、リレーショナルデータベースのセットアップ、運用、スケーリングを容易にするフルマネージドサービスです。RDSは、データの耐久性と復旧のために、自動的にDBスナップショットを作成する機能を備えています。しかし、DBインスタンスのタグを、そのDBスナップショットに自動的にコピーする設定を有効にしていない場合、以下のような重大なリスクが発生します。
- リソース識別と可視性の欠如: タグは、リソースの所有者、環境(
dev
、staging
、prod
)、コストセンターなどの重要なメタデータを付与する役割を果たします。DBインスタンスに付与されたタグがスナップショットにコピーされないと、どのスナップショットがどのインスタンスに関連しているのか、誰が所有しているのかといった情報が失われます。これにより、バックアップの管理、コストの追跡、リソースの棚卸しが非常に困難になります。 - アクセスポリシーの不一致: IAMポリシーやリソースベースのポリシーでは、タグを条件としてアクセス制御を行うことがよくあります。例えば、
"tag:Owner": "TeamA"
のタグを持つリソースにのみアクセスを許可するポリシーが考えられます。タグがスナップショットにコピーされないと、親DBインスタンスには適用されているアクセス制御が、そのスナップショットには適用されません。これにより、意図せずスナップショットへのアクセスが許可されてしまったり、逆に正規のユーザーがアクセスできなくなったりするリスクが生じます。 - 自動化プロセスの機能不全: 多くの自動化スクリプトやツールは、タグをキーとしてリソースを識別し、操作を実行します。たとえば、「
Environment=dev
のタグを持つすべてのスナップショットを7日後に削除する」といったスクリプトを運用しているとします。タグがコピーされていないと、これらの自動化プロセスがスナップショットを正しく識別できず、重要なスナップショットが誤って削除されたり、不要なスナップショットが残り続けたりする可能性があります。
対策
RDS DBインスタンスで、スナップショットへのタグの自動コピーを有効にすることは、上記のすべてのリスクを軽減し、一貫したアクセス制御、効率的なリソース管理、およびコンプライアンスの遵守を確保するための重要なベストプラクティスです。
- 一貫したアクセスポリシーの適用: 親DBインスタンスに設定されたタグをスナップショットにもコピーすることで、タグベースのIAMポリシーがスナップショットに対しても正しく機能します。これにより、データの一貫したアクセス制御を保証できます。
- 効率的なリソース管理: スナップショットにも親インスタンスと同じメタデータが付与されるため、所有者、環境、コストセンターなどの情報が一目でわかり、管理やコスト分析が容易になります。
- 自動化の信頼性向上: タグをコピーすることで、タグベースの自動化スクリプトやツールがスナップショットを正しく識別できるようになります。これにより、バックアップのライフサイクル管理がより信頼性の高いものになります。
修復方法
RDS DBインスタンスでスナップショットへのタグの自動コピーを有効にする方法は、AWSコンソールまたはTerraformで行えます。この設定は、DBインスタンスの作成時または既存のインスタンスの修正時に設定できます。
AWSコンソールでの修復手順
AWSコンソールを使用して、RDS DBインスタンスのスナップショットへのタグの自動コピーを有効にします。
- RDSサービスへ移動: AWSコンソールにログインし、Amazon RDS サービスを開きます。
- DBインスタンスを選択: 左側のナビゲーションペインで「データベース」を選択し、設定を変更したいDBインスタンスを選択します。
- 「変更」ボタンをクリック: インスタンスの詳細ページで「変更」ボタンをクリックします。
- 「DBインスタンスオプション」の設定:
- 変更画面が表示されたら、「追加の接続設定」または「DBインスタンスオプション」といったセクションまでスクロールします。
- 「タグをスナップショットにコピーする」のチェックボックスにチェックを入れます。
- 変更の適用:
- 変更内容を確認し、画面の一番下までスクロールします。変更を適用するタイミングを選択します。「すぐに適用」または「次のメンテナンスウィンドウで適用」を選択します。「変更」ボタンをクリックして、設定を保存します。

これで、以降に作成されるすべての手動スナップショット、および自動スナップショットには、親インスタンスと同じタグがコピーされるようになります。
Terraformでの修復手順
TerraformでRDS DBインスタンスのスナップショットへのタグの自動コピーを有効にするには、aws_db_instance
リソースの copy_tags_to_snapshot
パラメータを true
に設定します。
# (前提) RDS DBインスタンスに関連するVPC, サブネットグループ, IAMロール等は別途定義
resource "aws_db_instance" "my_rds_instance" {
allocated_storage = 20
db_name = "mydb"
engine = "mysql"
engine_version = "8.0.32" # 適切なバージョンを指定
instance_class = "db.t3.medium"
identifier = "my-secure-db-instance"
username = "admin" # デフォルトではないユーザー名
password = "MyStrongPassw0rd!" # 強力なパスワード
# **重要: スナップショットへのタグのコピーを有効化**
copy_tags_to_snapshot = true
skip_final_snapshot = true
multi_az = true # 高可用性のためのMulti-AZ配置も推奨
storage_encrypted = true # 暗号化も有効にすることを推奨
tags = {
Name = "MyRDSInstance"
Environment = "Production"
Owner = "TeamBeta"
}
}
# (関連リソースの例)
resource "aws_subnet" "private_a" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "${data.aws_region.current.name}a"
}
resource "aws_db_subnet_group" "default" {
name = "main"
subnet_ids = [aws_subnet.private_a.id]
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
上記のTerraformコードでは、aws_db_instance
リソースの copy_tags_to_snapshot
パラメータを true
に設定することで、スナップショットへのタグの自動コピーを有効にしています。
copy_tags_to_snapshot = true
: この設定により、Terraformがインスタンスをプロビジョニングまたは更新する際に、スナップショットへのタグの自動コピーが有効になります。tags
:aws_db_instance
リソースに付与されたタグが、自動的にスナップショットにもコピーされるようになります。
この変更を適用することで、将来的に取得されるすべてのスナップショットに親インスタンスのタグが自動的に付与され、管理とセキュリティの一貫性が保たれます。
最後に
この記事では、Amazon RDS DBインスタンスでスナップショットへのタグの自動コピーを有効にすることの重要性について解説しました。この設定は、アクセスポリシーの一貫性を保ち、リソース管理を効率化し、コンプライアンスを遵守する上で不可欠です。 貴社のRDS DBインスタンスは、スナップショットにもタグがコピーされるように設定されていますか?この機会にぜひ設定を確認・強化してみてください。 こちらの内容の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。運用が非常にラクに出来る製品になっていますのでぜひ興味がある方はお問い合わせお待ちしております。
最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。