本記事の目的
本記事では IBM Cloudの「コンテキスト・ベースの制限事項」機能を利用し、特定のCloud Object Storageバケットについて、CP4DaaSクラスタのプライべートIPアドレス範囲からPrivate Endpoint経由の接続のみ許可する設定例を紹介します。
1. 本記事で利用するIBM Cloudの機能について
本記事の設定例で利用するIBM Cloudの機能について紹介します。
1. コンテキストベースの制限事項
2021 年 9 月に追加された機能です。
IBM Cloud リソースに対して、ネットワーク・ロケーション(IP アドレス構造、VPC、サービス参照)に基づくアクセス制限を構成および適用するために使用します。
従来より、IBM Cloud アカウントやユーザー単位での許可IPアドレスを構成可能(Allowing specific IP addresses)でしたが、コンテキストベースの制限事項によってIBM Cloudリソース単位でのよりきめ細かいアクセス制御が可能となりました。
-
製品資料:IBM Cloudの概要 > リリース情報 2021年9月
https://cloud.ibm.com/docs/overview?topic=overview-whatsnew&locale=ja#overview-sept2721 -
製品資料:What are context-based restrictions?
https://cloud.ibm.com/docs/account?topic=account-context-restrictions-whatis上記URLより引用し一部改変:Figure 1. A diagram that shows how context-based restrictions work.
2022年9月現在、コンテキストベースの制限事項に対応しているIBM Cloudサービスは以下となります。
最新のサポート状況は、下記の製品資料をご確認ください。
- 製品資料:Services integrated with context-based restrictions
https://cloud.ibm.com/docs/account?topic=account-context-restrictions-whatis#cbr-adopters
Service | Service type |
---|---|
IAM Access Groups Service | Account Management |
IAM Access Management Service | Account Management |
IAM Identity Service | Account Management |
IAM User Management | Account Management |
IBM Cloud Object Storage | IAM-enabled |
Code Engine | IAM-enabled |
Container Registry | IAM-enabled |
Key Protect | IAM-enabled |
コンテキストベースの制限の利用方法
コンテキストベースの制限を利用する際には、ネットワーク・ゾーン
とルール
を定義します。
ネットワークゾーン
対象IBM Cloudリソースへのアクセスを許可するネットワーク・ローケーションを指定します。
ネットワーク・ローケーションとして指定できる項目は、IP アドレス構造、VPC、サービスとなります。
ルール
コンテキスト(ネットワークゾーン、エンドポイント)とコンテキストからのアクセスを許可するIBM Cloudリソースを指定します。
- ルールの設定項目
ルールの作成時、以下の各項目について値を設定します。
項目 | 選択肢 | 説明 |
---|---|---|
ルールを強制するか | 有効 | この規則を強制適用します。 アクセス試行の拒否は、 Activity Trackerに報告されます。 |
無効 | この規則を強制適用しません。 アカウント・リソースには制限は適用されません。 | |
Report-only | このルールが適用されずに、ユーザーにどのような影響を与えるかをモニターします。 このアカウント内のリソースへのアクセス試行はすべて、 Activity Trackerに記録されます。 ルールを適用する前に、30日間モニターすることをお勧めします。 | |
サービス | コンテキストベースの制限事項に対応したIBM Cloudサービス | 先述のコンテキストベースの制限事項に対応しているIBM Cloudサービスを指定可能です。 |
リソース | 「すべてのリソース」または「特定のリソース」 | 「特定のリソース」を選択すると、条件に合致した特定のサービス・インスタンスのみを指定可能です。 |
ネットワークゾーン | 事前に作成済みの1つ以上のネットワークゾーン | IBM Cloudリソースへのアクセスを許可するネットワーク・ローケーションを定義したネットワークゾーンを指定します。 |
エンドポイント・タイプ | Public | どこからの要求も受け入れ、発信帯域幅に基づいて課金が評価されます。 |
Private | IBM Cloud 内から送信されるほとんどの要求に使用できます。 | |
Direct | Cloud Object Storageで利用可能です。VPC 内のリソースから送信される要求の場合、個人所有の IP (BYOIP) シナリオで使用されます。 |
ルール違反のモニタリング
オプションとしてIBM Cloudのサービスとして提供されているActivity Trackerを併用すると、ルールの違反をモニタリングすることができます。
ルールの設定項目「ルールを強制するか」で、有効
またはReport-only
を指定したルールが、モニタリングの対象となります。
-
製品資料:Monitoring context-based restrictions
https://cloud.ibm.com/docs/account?topic=account-cbr-monitor
IBM CloudのサービスのActivity Trackerを作成する際、ルールを定義したIBM Cloudリソース
とActivity Trackerインスタンス
のリージョンを一致させることが必要です。
両者のリージョンが異なると、Activity Trackerはモニタリングすることができません。
また、IAMに関連するAccount Managementタイプのサービスをモニタリングする場合、eu-de(フランクフルト) のActivity Trackerインスタンスの利用が必要となります。
- 製品資料:Auditing events for account, IAM, catalog management
https://cloud.ibm.com/docs/account?topic=account-acct_iam_tracking#tracking-iam
<該当箇所の抜粋>
You must create an instance of the Activity Tracker service in the eu-de region to start tracking IAM events.
2. Private Endpoint
Private Endpointは、IBM Cloudのサービス・エンドポイント対応サービスで利用可能なオプションです。
対応サービスのリソースでPrivate Endpointを有効化すると、IBM Cloudプライベート・ネットワーク経由でのリソース・アクセスが可能になります。
例えば、IBM Cloud上の仮想サーバー(Virtual Server Instance:VSI)にデプロイしたアプリケーションから、IBM Cloud上のCloud Object Storageやデータベース・サービスにアクセスする場合など、IBM Cloud上のリソース同士の通信に利用することができます。
Private Endpointのみを有効化したリソースは、インターネットでルーティング可能な IP アドレスを持たないため、パブリック・インターネットへのアクセスを制限したい場合に役に立ちます。
-
Private Endpointを利用可能なサービス
- 「サービス・エンドポイントを使用したサービスへのセキュアなアクセス」>「サービス・エンドポイントの使用」参照
- https://cloud.ibm.com/docs/account?topic=account-vrf-service-endpoint&interface=ui
2. Cloud Object Storageバケットに対してCP4DaaSからPrivate Endpoint経由でのアクセスのみ許可する設定例
データを蓄積用のCloud Object Storageバケット(以下、COSバケット)を作成し、東京リージョンのCP4DaaS製品が使用するクラスタIPアドレスからプライベートエンド・ポイント経由でのアクセスのみ許可する方法を確認します。
以降の手順は、下記の製品資料の手順を「コンテキスト・ベースの制限事項」に読み替えて実施したものとなります。
- 製品資料:Firewall access for Cloud Object Storage
https://dataplatform.cloud.ibm.com/docs/content/wsj/admin/firewall-cfg-private-cos.html?audience=wdp&locale=en
1. 東京リージョンのCP4DaaS製品が使用するIPアドレス範囲の確認
- 東京リージョンのCP4DaaSへログインし、ナビゲーションメニューより「管理」>「クラウド統合」と進みます。
- 「クラウド統合」ページの右上より「ファイアウォール構成」をクリックします。
- 「クラウド・ファイアウォールの構成」ウィンドウが表示されます。2つのチェックボックスを☑します。
- Private IPsのアドレス範囲を全て控えます。
2. COSバケットの準備
- IBM CloudのWebコンソールより、Cloud Object StorageのUIへ進みます。
- COSバケットアクセス用にサービス資格情報を新規作成します。
- COSバケットを新規作成します。
3. COSバケット用のコンテキストベースの制限事項の作成
-
新規のルールを作成します。
本手順では、簡単のため、東京リージョンのCP4DaaS製品が使用するクラスタIPアドレス
からの接続のみを許可していますが、実際の設定時はCOSバケットにデータをアップロードする環境のIPアドレス
の追加も必要です。
この設定が抜けてしまうと、COSバケットへのデータ・アップロードがエラーとなってしまうため、ご注意ください。
- 内容を確認し、ネットワーク・ゾーン作成します。
- ルールの作成画面へ戻ります。作成したネットワークゾーンを選択し、追加します。
- ルールの内容を確認し、作成します。
- 作成されたルールが一覧へ表示されます。
4. CP4DaaSからCOSバケットへ接続
①東京リージョンのCP4DaaSからPrivate Endpoint経由でCOSバケットへ接続 → 接続OK
許可したコンテキスト(エンドポイント・タイプ、IPアドレス)から接続できることを確認します。
- 東京リージョンのCP4DaaSへアクセスします。
- テスト用にプロジェクトを新規作成します。
- プロジェクトへ接続資産を作成します。
控えておいたCOSバケットのエンドポイントURLとサービス資格情報を利用します。
- テスト接続を実行します。接続に成功します。
②ダラス・リージョンのCP4DaaSからPrivate Endpoint経由でCOSバケットへ接続 → 接続NG
許可していないコンテキスト(IPアドレス)から接続が失敗することを確認します。
- ダラス・リージョンのCP4DaaSへアクセスします。
- テスト用にプロジェクトを新規作成します。
- プロジェクトへ接続資産を作成します。
- テスト接続を実行します。接続は失敗します。
テストは正常に終了しませんでした The assets request failed: CDICO0103E: Invalid username or password: Amazon s 3 error: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 9909c95b-e3c6-49d3-b777- eb0674e9ffb9)
期待通りCOSバケットへ、東京のCP4DaaSからPrivate Endpoint経由の接続のみ許可することができました。
参考資料
-
製品資料:What are context-based restrictions?
https://cloud.ibm.com/docs/account?topic=account-context-restrictions-whatis -
製品資料:Monitoring context-based restrictions
https://cloud.ibm.com/docs/account?topic=account-cbr-monitor -
製品資料:Firewall access for Cloud Object Storage
https://dataplatform.cloud.ibm.com/docs/content/wsj/admin/firewall-cfg-private-cos.html?audience=wdp&locale=en