コンテキスト・ベースの制限による Secrets Manager リソースの保護
IBM Cloud® Secrets Manager サービス・インスタンスをセットアップした後、 コンテキスト・ベースの制限(CBR)を使用してアクセスを管理できます。
CBR 設定の管理
コンテキスト・ベースの制限 を使用すると、指定した条件に基づいて、 Secrets Manager リソースに対するユーザー・アクセス制限とサービス・アクセス制限を定義して適用することができます。
コンテキスト・ベースの制限と ID およびアクセス管理 (IAM) ポリシーを使用して、 Secrets Manager リソースを制御できます。 これらのリソースには、 Secrets Manager インスタンスにリンクされている仮想プライベート・クラウド (VPC) 参照と Internet Protocol (IP) アドレスが含まれます。
これらの制限は、アイデンティティに基づく従来のIAMポリシーと連携し、さらなる保護レイヤーを提供します。 IAM ポリシーとは異なり、コンテキスト・ベースの制限はアクセス権限を割り当てません。 コンテキスト・ベースの制限は、アクセス要求が、構成された許可されるコンテキストからのものであるかどうかを検査します。 IAM アクセスとコンテキスト・ベースの制限の両方によってアクセスが強制されるので、資格情報が漏洩した場合や適切に管理されなかった場合でも、コンテキスト・ベースの制限によって保護が提供されます。 詳しくは、コンテキスト・ベースの制限とはを参照してください。
ルールを作成、更新、または削除するには、ユーザーに Secrets Manager サービスに対する Administrator
役割が必要です。 ネットワーク・ゾーンを作成、更新、または削除するには、ユーザーには、コンテキスト・ベースの制限サービスに対する Editor
役割または Administrator
役割のいずれかが必要です。 コンテキスト・ベースの制限サービスに対する Viewer
役割を持つユーザーは、ネットワーク・ゾーンのみをルールに追加できます。
IBM Cloud Activity Tracker または監査ログ・イベントは、 Secrets Managerではなく、コンテキスト・ベースの制限サービスから生成されます。 詳しくは、 コンテキスト・ベースの制約事項のモニター を参照してください。
コンテキスト・ベースの制限を使用して Secrets Manager リソースの保護を開始するには、 リソースを保護するためのコンテキスト・ベースの制限の活用 のチュートリアルを参照してください。
Secrets Manager のコンテキスト・ベースの制限との統合方法
アクセスを制限するには、 ゾーン および ルール を作成する必要があります。
まず、ネットワークまたはリソースの定義に適切な詳細情報を設定したゾーンを作成します。 次に、そのゾーンを指定のリソースに適用してアクセスを制限します。 RESTful API または コンテキスト・ベースの制限を使用して、ゾーンとルールを作成できます。 ゾーンまたはルールを作成または更新した後、変更が有効になるまでに数分かかる場合があります。
CBR ルールは、プロビジョニング・プロセスまたはプロビジョン解除プロセスには適用されません。
制限
ユーザーがインスタンス・レベルの IAM アクセス権限を持っている場合、特定のシークレット・グループに適用される CBR ルールは有効になりません。 この制限を回避するには、ユーザーの IAM アクセス・ポリシーをシークレット・グループのみに設定します。
コンテキスト・ベースの制限は、 Secrets Manager API に関連付けられているアクションのみを保護します。 以下のプラットフォーム API に関連付けられたアクションは、コンテキスト・ベースの制限によって保護されません。 特定のアクション ID については、API 資料を参照してください。
- リソース・インスタンス API
- リソース・キー API
- IAM ポリシー API
- グローバル検索 API
- グローバル・タグ付け Attach および Detach API
- コンテキスト・ベースの制限ルール API
- Secrets Manager API
ネットワーク・ゾーンの作成
ネットワーク・ゾーンを作成することで、いつルールを適用できるかを決定するためにアクセス要求が発信されるネットワーク・ロケーションの許可リストを定義できます。 ネットワーク・ロケーションのリストは、以下の属性によって指定できます。
- IP アドレス。これには、個々のアドレス、アドレス範囲、サブネットが含まれます。
- VPC
- サービス参照。これは、他の IBM Cloud サービスからのアクセスを許可します。
他の IBM Cloud リソースをターゲットとするルールのネットワーク・ゾーンに Secrets Manager を追加してください。追加しないと、ワークフロー内の一部の操作が失敗する可能性があります。
仮想プライベート・クラウドのクラシック・インフラストラクチャー上に IBM Cloud 仮想サーバーを作成した場合、CBR ルールに使用する必要があるプライベート IP アドレスは、仮想プライベート・クラウド・ゲートウェイ IP です。 クラシック・インフラストラクチャー上の仮想サーバーには内部 IP アドレスを使用しないでください。 ゲートウェイ IP アドレスを見つけるには、仮想プライベート・クラウド・インフラストラクチャー内の関連する IBM Cloud サービス・エンドポイント・ソース IP アドレスを選択します。
APIを使用してネットワークゾーンを作成する
create-zone コマンドを使用して、ネットワーク・ゾーンを作成できます。 詳しくは、 API の資料 を参照してください。 Secrets Manager をサービス参照としてネットワーク・ゾーンに追加して、 Secrets Manager がルールの対象であるアカウント内のリソースおよびサービスにアクセスできるようにすることができます。
Secrets Manager の serviceRef 属性は secrets-manager
です。
参照ターゲットを確認することで、使用可能なサービスを判別できます。
Secrets Manager をネットワーク・ゾーンに追加するペイロードの例。
{
"name": "Example zone 1",
"description": "",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "secrets-manager",
"account_id": "ACCOUNT-ID"
}
}
]
}
複数のサービス、IP アドレス、および VPC をネットワーク・ゾーンに追加するペイロードの例。
{
"name": "zone",
"description": "",
"addresses": [
{
"type": "ipAddress",
"value": "192.168.0.0"
},
{
"type": "vpc",
"value": "crn:v1:bluemix:public:is:us-east:a/CRN"
},
{
"type": "vpc",
"value": "crn:v1:bluemix:public:is:us-south:a/CRN"
},
{
"type": "serviceRef",
"ref": {
"service_name": "cloud-object-storage",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "codeengine",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "containers-kubernetes",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_type": "platform_service",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "iam-groups",
"account_id": "ACCOUNT-ID"
}
}
],
"excluded": []
}
ゾーンを作成した後、それらを 更新または削除 することができます。
UIを使用してネットワークゾーンを作成する
前提条件および要件を設定した後、UI でゾーンを作成できます。 詳しくは、 コンテキスト・ベースの制限の作成 を参照してください。
- 許可リストに追加するリソースを決定します。
- コンソールで コンテキスト・ベースの制限を作成する 手順に従います。 Secrets Manager サービスをネットワーク・ゾーンに追加して、 IBM Cloud® Secrets Manager がアカウント内のサービスおよびリソースにアクセスできるようにします。
ゾーンを作成した後、それらを 更新または削除 することもできます。
CLI を使用してネットワークゾーンを作成する
cbr-zone-create
コマンドを使用して、ネットワーク・ロケーション、VPC、およびサービス参照をネットワーク・ゾーンに追加できます。 詳しくは、CBR CLI リファレンス を参照してください。 Secrets Manager をサービス参照としてネットワーク・ゾーンに追加して、 Secrets Manager
がルールの対象であるアカウント内のリソースおよびサービスにアクセスできるようにします。
- CLI からネットワーク・ゾーンを作成するには、 CBR CLI プラグインをインストールします。
cbr-zone-create
コマンドを使用して、ネットワーク・ゾーンにリソースを追加します。 詳しくは、CBR CLI リファレンス を参照してください。 Secrets Manager のservice_name
はsecrets-manager
であることに注意してください。
使用可能なサービス参照のリストを見つけるには、 ibmcloud cbr service-ref-targets
コマンド を実行します。
secrets-manager
サービスをネットワーク・ゾーンに追加するコマンドの例。
ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=secrets-manager
ルールの解説
ゾーンを作成した後、ルールを作成することで、ゾーンをネットワークリソースに割り当てることができます。 リソースをルールに追加するときに、ネットワーク・トポロジーに固有の使用可能な エンドポイントのタイプ から選択できます。
APIを使用してルールを作成する
ネットワーク・ゾーンの作成から収集した情報を使用して、API でルールを定義できます。
以下の例を検討して、 Secrets Managerのルールを作成する方法を学習します。 詳しくは、 API の資料 を参照してください。
以下のペイロードの例では、 CLUSTER-ID
クラスターを保護するルールを作成します。 NETWORK-ZONE-ID
ゾーン内のリソースのみがクラスターにアクセスできます。 operations
が指定されていない場合、 NETWORK-ZONE-ID
ゾーン内のリソースは、 cluster
API と management
API の両方にアクセスできます。
{
"description": "Example rule 1",
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "ACCOUNT-ID"
},
{
"name": "serviceName",
"value": "secrets-manager"
},
{
"name": "serviceInstance",
"value": "CLUSTER-ID"
}
]
}
],
"contexts": [
{
"attributes": [
{
"name": "networkZoneId",
"value": "NETWORK-ZONE-ID"
},
{
"name": "endpointType",
"value": "private"
}
]
}
]
}
UIを使用してルールを作成する
前提条件と要件を設定した後、UI でルールを作成できます。
- 許可リストに追加するリソースを決定します。
- コンソールで コンテキスト・ベースの制限を作成する 手順に従います。 Secrets Manager サービスをネットワーク・ゾーンに追加して、 IBM Cloud® Secrets Manager がアカウント内のサービスおよびリソースにアクセスできるようにします。
CLI を使用したルールの作成
Secrets Managerのルールを作成する方法については、以下の例を参照してください。 詳しくは、CBR CLI リファレンス を参照してください。
- CLI からルールを作成するには、 CBR CLI プラグインをインストールします。
ibmcloud cbr rule-create
コマンド を使用して、CBR ルールを作成できます。 詳しくは、CBR CLI リファレンス を参照してください。 Secrets Manager のservice_name
はsecrets-manager
であることに注意してください。 サービス名のリストを見つけるには、ibmcloud cbr service-ref-targets
コマンドを実行します。 サービスの API タイプのリストを見つけるには、ibmcloud cbr api-types --service-name SERVICE
コマンドを実行します。
addresses
キー、 cluster
API タイプ、および ipAddress
タイプを使用するルールを作成するためのサンプル・コマンド。
ibmcloud cbr rule-create my-rule-1 --service-name secrets-manager --api-type crn:v1:bluemix:public:secrets-manager::::api-type:cluster --zone-id ZONE-ID
以下のコマンドは、 CLUSTER-ID
クラスターを保護するルールを作成します。 NETWORK-ZONE-ID
ネットワーク・ゾーン内のリソースのみがクラスターにアクセスできます。 このルールには、 cluster
と management
の両方の API タイプが含まれます。
ibmcloud cbr rule-create my-rule-2 --service-name secrets-manager --service-instance CLUSTER-ID --zone-id NETWORK-ZONE-ID
次のステップ
ゾーンやルールの作成や変更には、アクセスと可用性を確保するための適切なテストを必ず実施しなければなりません。
適切なルールが設定されていない場合、定義されたゾーン外からお客様のリソースにアクセスしようとしたユーザーには、 HTTP error 401
が送信されます。