🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

Q&A

解決済

2回答

4931閲覧

AWS RDSのセキュリティグループ 全開放のリスク

zapas

総合スコア7

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

0グッド

2クリップ

投稿2019/12/25 04:34

AWS RDS(MySQLを使用)のセキュリティグループのインバウンド定義に、
どこからでもアクセス可能な0.0.0.0/32 3306 を設定するのはどれくらいリスクがありますでしょうか?
機密情報は保持せず、ユニットテスト用(スタブ化はNGとして)にほぼデータは空の状態で使用しようと思っていますが、非常に危険なことでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/12/25 05:08

使用時は、どこから接続する予定ですか?
zapas

2019/12/25 07:14

説明が不足していましたが、GitHubActionsのワークフローにてRDSアクセスをしたいと考えています。 そのワークフロー内でAWS CLIにてホワイトリストを追加して終わったら削除するという方法くらいしかないのかとも思ってきました。
guest

回答2

0

ユーザーの認証情報の強度や、アタックされた時にどれくらい困るか、仮にDBの情報が漏洩/改竄された時にどれくらい困るか等によりますが危険性はリストアップしきれません。

よくわからないのであれば、別の方法を探した方が絶対良いという程度には危険なので、
別の方法を考えた方が良いかと思いますよ。

何故そうしたいと思っているかによりますが
例えばグローバルIPを固定出来ない環境からRDSに接続したい場合ことが動機なのであれば

  1. 固定IPが払い出されるVPNサービスを使う
  2. VPS内に鍵認証でしかSSHログイン出来ないEC2を立てて、ssh+ポートフォワード経由でRDSにアクセスする
  3. ローカルネットワーク内やローカルPC内にDBを立ててテストはそこで行う

等の選択肢があります。

投稿2019/12/25 05:34

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zapas

2019/12/25 07:14

ご回答ありがとうございます。 やはり全開放はかなり危険なことが分かりました。 ご教示頂いた別の方法も含め、他の方法を探してみたいと思います。
guest

0

ベストアンサー

どこからアクセス可能かはセキュリティグループだけで決まるわけではありません。
なので、それだけではリスクの評価ができません。

RDSを置いているVPCのサブネットに設定しているネットワークACLや、そのサブネットに関連付けられているルートテーブルの設定によっても変わります。

ネットワークACLは何もしてなければインバウンド、アウトバウンドともにすべて許可するようになっているはずなのでひとまずその前提で考えます。

サブネットについては、大まかにはパブリックサブネットかプライベートサブネットかどちらかによって話が変わってきます。
ざっくりとですが、前者であればそのサブネットにインターネットからアクセスできる状態に、後者であればインターネットからアクセス出来ない状態になっています。

RDSをパブリックサブネットに置いている場合、RDSのセキュリティグループを全開放するのは危険なので避けるべきです。
もしエンドポイントがわかってしまうと、パスワード認証を何らかの形で突破されたらDBを操作されてしまいますし、そもそもリクエストが外から届くことで、例えば大量のリクエストを投げたりしてRDSのパフォーマンスを低下させることもできてしまいます(DDoSのようなもの)
万一参照だけでなく変更の権限があるユーザで認証を突破されてしまうと、好きなようにDBを使われてしまいます。
巨大なデータを突っ込んでディスクをいっぱいにさせたりとかDBをまともに機能しなくしたりとか、必要以上に料金を発生させたりとか、いろんなことが考えられますね。
上記をインターネットの上でどこからでも行うことが出来てしまうのはかなりリスクが高いです。

プライベートサブネットに置いていればそもそもインターネットからアクセスできないのでリスクは大きく減ります。
ただし、AWS内からのアクセスしかないとしてもアクセス元は適切に絞ったほうが安全です。(特定のセキュリティグループや、特定のVPCのCIDRからのみ、など)
どうしてもインターネット経由から直接アクセスしたいという理由がなければ、基本的にRDSはプライベートサブネットに置くべきかと思います。

いずれにせよ、接続元を制限しないことは大したメリットがない割にリスクのほうが大きいので適切に絞りましょう。

投稿2019/12/25 05:29

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zapas

2019/12/25 07:14

ご回答ありがとうございます。 やはり全開放はかなり危険なことが分かりました。 悪用された場合のリスクが計り知れないですね。。 別の方法を探してみたいと思います。
yu_1985

2019/12/25 07:23

Publicly Accessibleにする必要はありますが、IAM認証を使う方法もあります。 https://dev.classmethod.jp/cloud/aws/iam-auth-rds/ ただ、GitHub Actionsで使うのであれば鍵をどこかに置かなければいけないのでイマイチですね…。 そもそもの話ですが、ユニットテストのときだけRDSを使うのはコスト的にあまり割に合わないと思います(RDSは結構高いので…) 基本的に空にするのであればDockerコンテナを使うなり、別の方法で行うほうがいいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問