コンテキストベースの制限でIAMサービスを保護する
コンテキストベースの制限により、 アカウント所有者と管理者は、アクセス要求のコンテキストに基づいて、 IBM Cloud® リソースに対するアクセス制限を定義し、実施することができます。 IAMリソースへのアクセスは、コンテキストベースの制限とアイデンティティ・アクセス管理(IAM)ポリシーで制御できる。 IAM アクセスとコンテキスト・ベースの制限の両方によってアクセスが強制されるので、資格情報が漏洩した場合や適切に管理されなかった場合でも、コンテキスト・ベースの制限によって保護が提供されます。 詳しくは、コンテキスト・ベースの制限とはを参照してください。
これらの制限は、IDに基づく従来のIAMポリシーと連動し、もう1つの保護レイヤーを提供する。 IAM ポリシーとは異なり、コンテキスト・ベースの制限はアクセス権限を割り当てません。 コンテキスト・ベースの制限は、アクセス要求が、構成された許可されるコンテキストからのものであるかどうかを検査します。
ルールの作成、更新、または削除を行うには、対象とする特定の IAM サービスで Administrator ロールを持つユーザーが必要です。 ネットワークゾーンを表示し、ルールに追加するには、ユーザーは少なくともContext-based restrictionsサービスのViewerロールを持っている必要がある。 コンテキストベースの制限サービスのEditorまたはAdministratorロールは、ネットワークゾーンを作成、更新、または削除するためのアクセス権をユーザーに付与します。
生成される IBM Cloud Activity Tracker または監査ログイベントは、IAMサービスではなく、コンテキストベースの制限サービスから来る。 詳細については、 コンテキスト・ベースの制限の監視を 参照のこと。
コンテキストベースの制限でIAMリソースの保護を開始するには、 コンテキストベースの制限を活用してリソースを保護する チュートリアルを参照してください。
IAMとコンテキスト・ベースの制限の統合方法
特定のIAMサービスまたはすべてのIAM アカウント管理サービスのグループを保護するには、以下の手順を実行する:
- IBM Cloud コンソールで、[ 管理] > [コンテキストベースの制限]をクリックし、 [ルール] を選択します。
- 「作成」 をクリックします。
- 個々のIAMサービス、またはすべてのIAM アカウント管理サービスのグループを選択します。
- そして、「次へ」 をクリックします。
- サービス全体またはサービスグループを保護するには、制限の範囲を「 すべてのリソース 」にします。
- 特定のアクションだけを保護するには、制限の範囲を「 特定のリソース 」にします。
- 属性を選択し、値を選択または入力する。 特定のアクションを制限する方法については、ステップ3で対象としたサービスのセクションを参照してください。
- 「確認」>**「続行」**をクリックします。
- 1つ以上のコンテキストを追加する。 エンドポイント・タイプとネットワーク・ゾーンを選択し、**「追加」**をクリックします。 詳細は ルールの作成を 参照。
- 「続行」 をクリックします。
- ユニークな説明を提供する。
- ルールの適用方法を選択します。 ルール作成時にルールの適用方法を決定し、いつでもルールの適用方法を更新できる。 詳しくは 規則施行を 参照のこと。
例えば、IAM Access Groupsサービスを対象とするルールを作成するとしよう。 IAM Access Groupsサービスのアクションを完了するには、ユーザーはIAMアクセスポリシーで正しいロールが割り当てられ、コンテキストベースの制限ルールを満たす必要があります。 たとえば、IAM Access GroupsサービスのViewerロールを持つユーザーは、正しいネットワークゾーンからリクエストを送信し、ルールを満たしていれば、 iam-groups.members.read 、アクションを完了できる。 Viewerロールを持つ同じユーザーがグループ(iam-groups.members.add)にメンバーを追加しようとした場合、彼らはEditorまたはAdministratorではないため、ルールを満たしているにもかかわらず、そのリクエストを完了することができません。
サービスに関連するアクションを表示するには、 IBM Cloud® コンソールの Roles ページに移動します。
IAMとコンテキスト・ベースの制限の統合方法
特定のIAMサービスまたはすべてのIAM アカウント管理サービスのグループを保護するには、以下の属性を使用してルールを構築する:
| サービス | 名前 | 値 |
|---|---|---|
| IAM アクセス・グループ・サービス | serviceName |
iam-groups |
| IAM アクセス管理サービス | serviceName |
iam-access-management |
| IAM Identity サービス | serviceName |
iam-identity |
| ユーザー・マネジメントのサービス | serviceName |
user-management |
| すべての IAM アカウント管理サービス | service_group_id |
IAM |
サービスに関連するすべてのアクションを保護するには、特定のリソースやAPIにスコープせずにルールを作成する。 詳細は ルールの作成を 参照。 特定のアクションだけを守るには、表1にリンクされている以下のセクションを見直す。
IAM Access Groupsサービスの保護
IAM Access Groupsサービスには、アクセス・グループを作成、編集、削除する機能がある。 その機能は、グループへのユーザーの追加や削除、グループへのアクセス権の割り当て、アクセスグループで作業するための他のユーザーのアクセス権の管理にまで及びます。 サービスに関連するすべてのアクションを含む、サービス全体を保護することができます。
特定のアクセスグループの管理能力を制限する
ルールを Resource ID 属性にスコープすることで、特定のアクセスグループを管理する能力を保護できます。 Resource ID 属性にスコープされるルールを作成することで、その特定のアクセスグループのサービスに関連するすべてのアクションが保護されます。
このルールを設定するには、 IAM Access Groupsサービスをターゲットにし、ルールを Specificリソースにスコープし、 Resource ID 属性を選択する。 次に、保護したいアクセスグループのIDを入力します。 ルールを設定する手順の詳細については、「 IAMとコンテキストベースの制限の統合方法 」を参照のこと。
アクセスグループIDを見つけるには、[ 管理]>[アクセス(IAM)]>[アクセスグループ]に進みます。 ルールで保護するアクセスグループをクリックします。 次に、「 詳細」をクリックする。 欲しい値は AccessGroupId で始まる。
APIを使用して特定のアクセスグループを管理する機能を制限する
ルールを resource 属性にスコープすることで、特定のアクセスグループを管理する能力を保護できます。 resource 属性にスコープされるルールを作成することで、その特定のアクセスグループのサービスに関連するすべてのアクションが保護されます。
次の例は、特定のアクセスグループを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-groups"
},
{
"name": "resource",
"value": "AccessGroupId1234",
"operator": "stringEquals"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
アクセスグループIDを調べるには、 List access groups メソッドを使用します。
IAMアクセス管理サービスの保護
IAMアクセス管理サービスには、カスタムロールの管理、アクセスポリシーの割り当て、IAM設定の管理などが含まれる。 サービス全体を保護することもできるし、リクエストのコンテキストに基づいて特定のアクションのセットを制限することもできる。
コンソールでカスタムロールを管理する機能の制限
Role Management リソースタイプにルールをスコープすることで、カスタムロールを管理する機能を保護できます。 Role Management リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-access-management.customRole.createiam-access-management.customRole.updateiam-access-management.customRole.deleteiam-access-management.customRole.read
このルールを構成するには、 IAMアクセス管理サービスをターゲットにし、制限の範囲を「 特定のリソース 」>「 リソースの種類 」に設定し、 「役割管理 」を選択する。 ルールを設定する手順の詳細については、「 IAMとコンテキストベースの制限の統合方法 」を参照のこと。
ロール管理アクションを完了するには、ユーザーはIAMアクセスポリシーで正しいロールを割り当てられ、コンテキストベースの制限ルールを満たさなければならない。 たとえば、IAM Access ManagementサービスのViewerロールを持つユーザーは、正しいネットワークゾーンからリクエストを送信し、ルールを満たせば、 iam-access-management.customRole.read 、アクションを完了できる。 同じユーザがカスタムロールを作成しようとすると、管理者ではないため、ルールを満たしていてもその要求を完了することができません。
コンソールでのポリシー管理機能の制限
Policy Management リソースタイプにルールをスコープすることで、IAM ポリシーを管理する能力を保護できる。 Policy Management リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam.delegationPolicy.createiam.delegationPolicy.updateiam.policy.readiam.policy.createiam.policy.updateiam.policy.delete
このルールを設定するには、 IAMアクセス管理サービスをターゲットにし、制限の範囲を「 特定のリソース 」>「 リソースの種類 」に設定し、「 ポリシー管理 」を選択する。 詳細は ルールの作成を 参照。
Policy Managementアクションを完了するには、ユーザーはIAMアクセスポリシーを持つサービスのロールを割り当てられ、コンテキストベースの制限ルールを満たす必要があります。 たとえば、IAM Access ManagementサービスのViewerロールを持つユーザーは、正しいネットワークゾーンからリクエストを送信し、ルールを満たせば、 iam.policy.read 、アクションを完了できる。 同じユーザーがポリシーを作成しようとすると、管理者ではないため、ルールを満たしていてもその要求を完了できません。
コンソールでインサイトを表示する機能の制限
ルールを insights リソースタイプにスコープすることで、非アクティブ ID や非アクティブポリシー レポートなどのインサイトを表示する機能を保護できます。 insights リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-access-management.insight.get
このルールを設定するには、 IAM Access Managementサービスをターゲットにし、制限のスコープを[ 特定のリソース ]>[ リソースタイプ ]に設定し、 [AM Insights ]を選択する。 詳細は ルールの作成を 参照。
設定アクションを完了するには、ユーザーはIAMアクセスポリシーで正しいロールが割り当てられ、コンテキストベースの制限ルールを満たす必要があります。 たとえば、IAM Access ManagementサービスのEditorロールを持つユーザーは、正しいネットワークゾーンからリクエストを送信し、ルールを満たせば、 iam-access-management.insight.get 、アクションを完了できる。 Viewerロールを持つユーザーは、EditorまたはAdministratorではないため、ルールを満たしてもそのリクエストを完了することはできません。
APIを使用したカスタムロールの管理機能の制限
customRole リソースタイプにルールをスコープすることで、カスタムロールを管理する機能を保護できます。 customRole リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-access-management.customRole.createiam-access-management.customRole.updateiam-access-management.customRole.deleteiam-access-management.customRole.read
次の例は、カスタムロールアクションを保護するJSON形式のルールを示しています:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-access-management"
},
{
"name": "resourceType",
"value": "customRole"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
ロール管理アクションを完了するには、ユーザーはIAMアクセスポリシーで正しいロールを割り当てられ、コンテキストベースの制限ルールを満たさなければならない。 たとえば、IAM Access ManagementサービスのViewerロールを持つユーザーは、正しいネットワークゾーンからリクエストを送信し、ルールを満たせば、 iam-access-management.customRole.read 、アクションを完了できる。 同じユーザーがカスタムロールを作成しようとすると、管理者でないため、ルールを満たしていてもその要求を完了できません。
APIを使用したポリシー管理機能の制限
policy リソースタイプにルールをスコープすることで、IAM ポリシーを管理する能力を保護できる。 Policy Management リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam.delegationPolicy.createiam.delegationPolicy.updateiam.policy.readiam.policy.createiam.policy.updateiam.policy.deleteiam.service.readiam.role.readiam.role.assign
次の例は、ポリシーアクションを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-access-management"
},
{
"name": "resourceType",
"value": "policy"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
APIを使用してインサイトを表示する機能を制限する
ルールを insights リソースタイプにスコープすることで、非アクティブ ID や非アクティブポリシー レポートなどのインサイトを表示する機能を保護できます。 insights リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-access-management.insight.get
次の例は、ポリシーアクションを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "8293c49bc2724a07999910b1da94c4d6"
},
{
"name": "serviceName",
"value": "iam-access-management"
},
{
"name": "resourceType",
"value": "insight"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
設定アクションを完了するには、ユーザーはIAMアクセスポリシーで正しいロールが割り当てられ、コンテキストベースの制限ルールを満たす必要があります。 たとえば、IAM Access ManagementサービスのEditorロールを持つユーザーは、正しいネットワークゾーンからリクエストを送信し、ルールを満たせば、 iam-access-management.insight.get 、アクションを完了できる。 Viewerロールを持つユーザーは、EditorまたはAdministratorではないため、ルールを満たしてもそのリクエストを完了することはできません。
IAM Identity サービスの保護
IAM Identity サービスには、サービス ID、API キー、ID プロバイダ( IdPs )、および信頼済みプロファイルを表示、更新、および削除する機能が含まれる。 また、サービスIDや信頼できるプロファイルにアクセスを割り当てることもできる。 すべてのユーザーがサービスIDを作成できるため、サービスアクションは、他のユーザーが作成したアカウント内のサービスID、APIキー、 IdPs。
サービス全体を保護することもできるし、リクエストのコンテキストに基づいて特定のアクションのセットを制限することもできる。 特定のアクションのみを保護するには、以下のセクションを参照してください。
IAM Token APIはコンテキストベースの制限を受けない。 IAM Identityサービスを対象とするルールは、Token APIには適用されない。 トークンAPIは、 アカウントログインするユーザーのIPアドレス制限を設定するために別のメカニズムを使用し、その間にユーザーはトークンを取得する。 詳細は アカウント特定のIPアドレスを許可する を参照。
コンソールでのサービスIDとそのAPIキーの管理機能の制限
serviceid リソースタイプにルールをスコープすることで、サービスIDとそのAPIキーを管理する機能を保護することができます。 serviceid リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.serviceid.getiam-identity.serviceid.updateiam-identity.serviceid.deleteiam-identity.apikey.manageiam-identity.apikey.getiam-identity.apikey.listiam-identity.apikey.createiam-identity.apikey.updateiam-identity.apikey.delete
このルールを構成するには、 IAM Identity サービスをターゲットにし、ルールを「 Specific」 リソースにスコープし、 Resource type 属性を選択する。 次に、 serviceid を入力する。 ルールを設定する手順の詳細については、「 IAMとコンテキストベースの制限の統合方法 」を参照のこと。
APIを使用したサービスIDとそのAPIキーの管理機能の制限
serviceid リソースタイプにルールをスコープすることで、サービスIDとそのAPIキーを管理する機能を保護することができます。 serviceid リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.serviceid.getiam-identity.serviceid.updateiam-identity.serviceid.deleteiam-identity.apikey.manageiam-identity.apikey.getiam-identity.apikey.listiam-identity.apikey.createiam-identity.apikey.updateiam-identity.apikey.delete
次の例は、 serviceid リソースタイプのアクションを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-identity"
},
{
"name": "resourceType",
"value": "serviceid"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
コンソールでのユーザーAPIキー管理機能の制限
ルールを apikey リソース・タイプにスコープすることで、ユーザー API キーを管理する機能を保護できます。 apikey リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.apikey.manageiam-identity.apikey.getiam-identity.apikey.listiam-identity.apikey.createiam-identity.apikey.updateiam-identity.apikey.delete
このルールを構成するには、 IAM Identity サービスをターゲットにし、ルールを「 Specific」 リソースにスコープし、 Resource type 属性を選択する。 次に、 apikey を入力する。 ルールを設定する手順の詳細については、「 IAMとコンテキストベースの制限の統合方法 」を参照のこと。
APIを使用したユーザーAPIキーの管理機能の制限
ルールを apikey リソース・タイプにスコープすることで、ユーザー API キーを管理する機能を保護できます。 apikey リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.apikey.manageiam-identity.apikey.getiam-identity.apikey.listiam-identity.apikey.createiam-identity.apikey.updateiam-identity.apikey.delete
次の例は、 apikey リソースタイプのアクションを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-identity"
},
{
"name": "resourceType",
"value": "apikey"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
コンソールでの信頼済みプロファイルの管理機能の制限
ルールを profile リソースタイプにスコープすることで、信頼されたプロファイルを管理する能力を保護できます。 profile リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.profile.createiam-identity.profile.updateiam-identity.profile.deleteiam-identity.profile.getiam-identity.profile.get_sessioniam-identity.profile.revoke_sessioniam-identity.profile.linkToResource
このルールを構成するには、 IAM Identity サービスをターゲットにし、ルールを「 Specific」 リソースにスコープし、 Resource type 属性を選択する。 次に、 profile を入力する。 ルールを設定する手順の詳細については、「 IAMとコンテキストベースの制限の統合方法 」を参照のこと。
APIを使用した信頼済みプロファイルの管理機能の制限
ルールを profile リソースタイプにスコープすることで、信頼されたプロファイルを管理する能力を保護できます。 profile リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.profile.createiam-identity.profile.updateiam-identity.profile.deleteiam-identity.profile.getiam-identity.profile.get_sessioniam-identity.profile.revoke_sessioniam-identity.profile.linkToResource
次の例は、 profile リソースタイプのアクションを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-identity"
},
{
"name": "resourceType",
"value": "profile"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
コンソールでアカウント設定を管理する機能の制限
settings リソースタイプにルールをスコープすることで、 アカウント設定を管理する機能を保護することができます。 settings リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.account.getiam-identity.account.createiam-identity.account.updateiam-identity.account.createiam-identity.account.updateiam-identity.account.enable_idpiam-identity.account.disable_idpiam-identity.account.deleteiam-identity.session.manage
このルールを構成するには、 IAM Identity サービスをターゲットにし、ルールを「 Specific」 リソースにスコープし、 Resource type 属性を選択する。 次に、 settings を入力する。 ルールを設定する手順の詳細については、「 IAMとコンテキストベースの制限の統合方法 」を参照のこと。
APIを使用したアカウント設定の管理機能の制限
settings リソースタイプにルールをスコープすることで、 アカウント設定を管理する機能を保護することができます。 settings リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.account.getiam-identity.account.createiam-identity.account.updateiam-identity.account.createiam-identity.account.updateiam-identity.account.enable_idpiam-identity.account.disable_idpiam-identity.account.deleteiam-identity.session.manage
次の例は、 settings リソースタイプのアクションを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-identity"
},
{
"name": "resourceType",
"value": "settings"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
コンソールで ID プロバイダを管理する機能の制限
idp リソースタイプにルールをスコープすることで、Identity Providers ( IdPs ) を管理する機能を保護できる。 ipd リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.idp.getiam-identity.idp.listiam-identity.idp.createiam-identity.idp.updateiam-identity.idp.deleteiam-identity.idp.testiam-identity.idp.metadata
このルールを構成するには、 IAM Identity サービスをターゲットにし、ルールを「 Specific」 リソースにスコープし、 Resource type 属性を選択する。 次に、 idp を入力する。 ルールを設定する手順の詳細については、「 IAMとコンテキストベースの制限の統合方法 」を参照のこと。
API を使用して ID プロバイダを管理する機能の制限
idp リソースタイプにルールをスコープすることで、Identity Providers ( IdPs ) を管理する機能を保護できる。 idp リソースタイプにスコープされたルールを作成すると、以下のアクションが保護されます:
iam-identity.idp.getiam-identity.idp.listiam-identity.idp.createiam-identity.idp.updateiam-identity.idp.deleteiam-identity.idp.testiam-identity.idp.metadata
次の例は、 idp リソースタイプのアクションを保護するJSON形式のルールを示している:
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "iam-identity"
},
{
"name": "resourceType",
"value": "idp"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
ユーザー管理サービスの保護
ユーザー管理サービスには、 アカウント内のユーザーの表示、ユーザーの招待と削除、ユーザープロファイル設定の表示と更新が含まれます。 このサービスに関連するすべてのアクションを保護するルールを作成できます。
ユーザー管理サービスのビューアーロールは、サポートケースを表示または管理するロールが割り当てられたユーザーに一般的に割り当てられます。 アカウント所有者が IAM 設定でユーザー・リストの可視性を制限した場合、ユーザーは、アカウント内の他のユーザーがオープンしたサポート Case を参照できなくなります。 しかし、ユーザー管理サービスのビューアー役割が割り当てられていれば、ユーザーはユーザー・リストの可視性設定に影響されずにアカウントの Case を表示できます。
このルールを設定するには、 User Managementサービスを対象とする。 コンソールでルールを設定する手順の詳細については、 IAMとコンテキストベースの制限の統合方法を 参照してください。
次の例は、すべての user-management アクションを保護するJSON形式のルールを示している:
{
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "serviceName",
"value": "user-management"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
}
すべてのIAM アカウント管理サービスの保護
すべてのIAM アカウント管理サービス は、 アカウント管理サービスのサブセットのグループ化であり、IAM Identity、IAM Access Management、IAM User Management、IAM Groupsが含まれる。 これらのサービスに関連するすべてのアクションを保護するルールを作成できます。
このルールを設定するには、 すべてのIAM アカウント管理サービス。 コンソールでルールを設定する手順の詳細については、 IAMとコンテキストベースの制限の統合方法を 参照してください。
次の例では、 IAM サービスグループ化に関連付けられているすべてのアクションを保護するJSON形式のルールを示している:
{
{
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "alphanumericAccoutnID"
},
{
"name": "service_group_id",
"value": "IAM"
}
]
}
],
"description": "",
"contexts": [],
"enforcement_mode": "enabled"
}
}