Amazon Redshift クラスターでデフォルトのデータベース名を使用しない設定について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。
今回は、Amazon Redshiftクラスターで、デフォルトのデータベース名が使用されている状態について、そのリスクと対策を解説します。

リスク
Amazon Redshiftは、ペタバイト規模のデータを分析できるフルマネージドのデータウェアハウスサービスです。Redshiftクラスターを作成する際、データベース名を指定できますが、これをデフォルトのままにしておくと、以下のようなセキュリティ上の重大なリスクが発生します。
- 意図しないアクセス許可: デフォルトのデータベース名(例:
dev
)は広く知られています。もしIAMポリシーなどでデータベース名に基づいてアクセスを制御している場合、デフォルト名を使用していると、意図しないプリンシパル(ユーザーやロール)にアクセスを許可してしまう可能性があります。これは、最小特権の原則に違反し、データ漏洩につながるリスクがあります。 - コンプライアンス要件の未達: 多くの組織やコンプライアンス規制では、リソースに一意で識別可能な名前を付けることが求められます。デフォルト名を使用していると、この要件を満たすことができず、監査での指摘につながる可能性があります。
- 運用上の混乱: 複数のクラスターがすべて同じデフォルト名を持っていると、どのクラスターがどのデータベースを参照しているのかが不明確になります。これにより、運用やトラブルシューティングが困難になり、設定ミスや誤操作を引き起こす可能性があります。
対策
Redshiftクラスターを作成する際は、デフォルトのデータベース名を一意で、かつ推測されにくい値に変更することが、上記のすべてのリスクを軽減し、セキュリティを強化するための重要なベストプラクティスです。
- 一意な名前でアクセスを制限: IAMポリシーやリソースベースのポリシーで、一意なデータベース名(例:
prod-analytics-db
)を条件としてアクセス制御を行うことで、より厳密な最小特権の原則を適用できます。 - コンプライアンスの遵守: 一意なデータベース名は、組織の命名規則やコンプライアンス要件を満たす上で不可欠です。
- 運用管理の明確化: データベース名が一意であれば、クラスターの用途や環境(開発、ステージング、本番など)を明確に識別でき、運用管理が容易になります。
修復方法
Redshiftクラスターに一意なデータベース名を設定する方法は、AWSコンソールまたはTerraformで行えます。この設定は、クラスターの作成時のみに行うことができます。既存のクラスターのデータベース名を変更することはできません。
AWSコンソールでの修復手順
AWSコンソールを使用して、新しいRedshiftクラスターを作成する際に一意なデータベース名を指定します。
- Redshiftサービスへ移動: AWSコンソールにログインし、Amazon Redshift サービスを開きます。
- クラスターの作成:
- 左側のナビゲーションペインで「クラスター」を選択し、「クラスターの作成」をクリックします。
- 「クラスター設定」の設定:
- クラスター識別子:
my-secure-cluster
など、一意の識別子を入力します。 - データベース名: 「詳細設定」セクションを展開し、「データベース設定」にある「データベース名」に、
analytics_prod_db
など、デフォルトではない一意のデータベース名を入力します。
- クラスター識別子:
- クラスターの作成:
- 変更内容を確認し、「クラスターの作成」をクリックして、設定を保存します。

これで、新しく作成されるRedshiftクラスターは、一意で安全なデータベース名でプロビジョニングされます。
Terraformでの修復手順
TerraformでRedshiftクラスターに一意なデータベース名を設定するには、aws_redshift_cluster
リソースの database_name
パラメータを使用します。
# (前提) Redshiftクラスターに関連するVPC, サブネットグループ, IAMロール等は別途定義
resource "aws_redshift_cluster" "my_secure_redshift_cluster" {
cluster_identifier = "my-secure-redshift-cluster"
node_type = "dc2.large" # 適切なノードタイプを指定
master_username = "dbadmin" # デフォルトではないユーザー名
master_password = "MyStrongPassw0rd!" # 強力なパスワード
# **重要: デフォルトではないデータベース名を指定**
database_name = "prod_analytics_db"
encrypted = true # 暗号化も有効にすることを推奨
cluster_type = "multi-node"
number_of_nodes = 2
publicly_accessible = false # 公開アクセスは無効にすることを強く推奨
# ... その他の設定
}
上記のTerraformコードでは、aws_redshift_cluster
リソースの database_name
パラメータに、デフォルトではない "prod_analytics_db"
を指定しています。
terraform apply
を実行することで、一意なデータベース名を持つ、セキュアなRedshiftクラスターがプロビジョニングされます。
最後に
この記事では、Redshiftクラスターにデフォルトのデータベース名が設定されているリスクと、それを修正することの重要性について解説しました。データベース名を一意に設定することは、アクセス制御の強化、コンプライアンスの遵守、および運用管理の明確化に不可欠です。 貴社のRedshiftクラスターは、デフォルトのデータベース名を使用していませんか?この機会にぜひ設定を確認・強化してみてください。 こちらの内容の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。運用が非常にラクに出来る製品になっていますのでぜひ興味がある方はお問い合わせお待ちしております。
最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。