IBM Cloud Databasesのアクセス制御
IBM Cloud の Cloud Databases (PostgreSQL, Redis など) は、Public Endpoint, Private Endpointでのアクセス制限が可能である。
しかし、Private Endpointは"IBM Cloud 内バックボーン経由"となるだけで、テナント境界を分離しない。つまり、別のアカウント上のコンポーネントやVPCからもアクセス可能となる。
そこで、Context-based Restriction (CBR) を用いて"特定のVPCからのみ"DBへアクセスできるような制御を実装する。
Context-based Restrictionについて:
(Event-NotificationsのDocumentだが、内容的には同じと思われる)
設定手順
今回はDatabases for PostgreSQLを一つのVPC(名前: your-vpc)からのみアクセスできるように制限してみる。
Databasesの適当なリソースを開き、Settingsの中段よりContext-based RestrictionsのCreate ruleをクリックすることで新規ルールの作成が可能。
新規ルールの作成
サービスには今回制限したいサービスを選択する。
APIセクションのサービスAPIには"Data plane (0)"を選択すること。
一見AllやControl Planeを選択しないと意味を為さないように見えるが、それらは選択するとエラーとなる。
リソースとして特定のリソースを選択し、今回制限をかけたいDBのインスタンス(Databases for PostgreSQL)を選択する
次へを選択してコンテキストの追加へ進む。
Endpointsのラジオボタンを有効化し、使用しているエンドポイントのチェックをいれる。
適当な名前を入力し、許可されたVPCのセクションにて、ドロップダウンよりVPCを選択する。
ここで選択したVPCからのみのアクセスに制限される。
レビュー -> Create
その後、忘れずに左下の”追加”をクリックすること。
追加して画面右側のコンテキストに表示されないと、設定は有効にならない。
次のページにてルールの詳細として適当な説明(名前)を入力し、適用をクリックすることでルールは作成される。
ルールの一覧に作成したルールが表示される。
psqlでの接続を試す
ルールを作成した後、体感1分ほどすると設定が有効になるようだ。
限定アクセスとしたVPCにVPN接続しpsqlコマンドを叩いたところ、通常通りアクセス可能であった。
同じアカウントの有する別VPCや、別アカウントのVPCからVPN接続しpsqlコマンドを叩き、アクセスできないことを確認できれば完了。