はじめに(全体の体系と記事の種類について)
本ブログでは、OCI学習を体系立てて整理するために、次の2種類の記事を扱います。
- 知識ノート(N-xx):概念・設計の考え方・判断基準を整理します。
- 検証(L-xx):手順・設定値・つまずきポイントを、再現可能な形で記録します。
ブログの全体像についてはこちら
本記事は、知識ノート(N-02)として、OCI IAMポリシーの基本文法(Allow …)と、実務で活用できる設計の考え方を整理します。
1. この記事の目的
OCI IAMポリシーについて、次を説明できる状態を目指します。
- Allow文の読み方(誰が・どこで・何を・どのレベルで)を分解して理解する
- read / use / manage / inspect の使い分けを説明できる
- 例外が増えにくいように、ポリシー設計の基本方針(型)を持つ
2. どこで使う(ユースケース)
- 閲覧専用(read-only)ユーザーを作る:監査・問い合わせ対応で「参照のみ」を安全に提供します。
- 運用の担当範囲を分ける:ネットワーク担当はネットワーク、運用担当はCompute運用など、担当範囲をポリシーで固定します。
- 環境分離(本番/開発/検証)を維持する:コンパートメント単位で許可範囲を限定し、誤操作の影響範囲を抑制します。
3. 図
「Allow文が表現している4要素」について

- ①:Principal(主体)
- 例:group
'Default'/'grp-readonly-sandbox'
- 例:group
- ②:Verb(操作レベル)
- 例:
inspect / read / use / manage
- 例:
- ③:Resource-type(対象)
- 例:
virtual-network-family/instance-family/all-resources
※*-familyは、Oracleが公式に定義しているresource-type(リソースタイプ)名です。利用者が任意に作った名称ではなく、ポリシー文でそのまま指定できる識別子として、Policy Referenceに一覧化されています。
- 例:
- ④:Scope(範囲)
- 例:
in compartment cmp-sandbox/in tenancy
- 例:
補足説明
OCI IAMのポリシーは、Allow文により「主体(誰に)」「操作レベル(何をどこまで)」「対象(どの種類に)」「範囲(どこで)」を宣言します。設計では、最初に範囲(Compartment)を確定し、その範囲内で対象と操作レベルを絞ることで、権限が肥大化しにくくなります。
4. 代表パターン例(3つ)
代表パターンの意味
ここでいう代表パターンとは、人の入れ替わりや環境追加があっても、ルールを増やし過ぎずに運用できる設計の型を指します。
パターン1:まず「read-only」を作り、必要に応じて拡張する
- 例(出発点)
Allow group 'Default'/'grp-readonly-sandbox' to read all-resources in compartment cmp-sandbox
- 意図
- 参照が必要な利用者に対し、変更権限を与えずに(=read-only)業務を成立させます。
- 拡張の方針
- 「見たいサービスだけ」に絞る場合は
virtual-network-familyなどへ段階的に分解します。
- 「見たいサービスだけ」に絞る場合は
パターン2:対象は *-family を優先し、サービス単位で管理する
- 例(ネットワーク運用者)
Allow group 'Default'/'grp-net-admin' to manage virtual-network-family in compartment cmp-sandbox
- 意図
- 影響範囲(Compartment)を固定したうえで、対象(family)を明確にし、担当外の操作を抑止します。
パターン3:スコープを「環境単位」で固定し、ルール増殖を防ぐ
- 例(本番/開発/検証をCompartmentで分離)
Allow group 'Default'/'grp-dev-ops' to use instance-family in compartment cmp-devAllow group 'Default'/'grp-prod-ops' to use instance-family in compartment cmp-prod
- 意図
- 同じ役割でも環境が異なれば別のスコープに切り、例外の混入を防ぎます。
5. 落とし穴(3つ)
落とし穴1:manage all-resources を安易に付与する
- 問題:範囲内の変更操作が広く可能になり、誤操作の影響が大きくなります。
- 対策:最初は
readまたはuseを基本とし、対象は*-familyを優先して絞ります。
落とし穴2:スコープ(compartment / tenancy)が曖昧なまま作成する
- 問題:意図せず見える範囲が広がり、権限の説明が困難になります。
- 対策:Allow文を書く前に、対象Compartmentを確定し、原則「環境・用途で分割」します。
落とし穴3:ドメイン・グループ参照の不一致(ポリシーが効かない)
- 問題:Identity Domainが異なるグループを参照すると、権限が付与されず、コンソールでAuthorization errorとなります。
- 対策:
'Default'/'group-name'のように、必要に応じてドメインを明示し、ユーザーの所属グループと整合させます。
6. 用語ミニ辞典
- Policy:アクセス許可ルール。複数のStatements(Allow文)で構成されます。
- Statement(Policy Statement):Allow文1行。主体・操作・対象・範囲を宣言します。
- Principal(主体):権限を付与される対象。主に group(人の集まり)を用います。
- Verb:操作レベル。代表例は
inspect / read / use / manageです。 - Resource-type:許可対象の種類。
all-resourcesや*-familyを用いて範囲を表現します。 - Scope:許可範囲。
in compartment Xまたはin tenancyで指定します。 - Identity Domain:ユーザー・グループを管理する単位。グループ参照が一致しないと権限評価が想定どおりになりません。
さいごに

もか
OCI IAMポリシーは、Allow文を「主体・操作レベル・対象・範囲」の4要素に分解して理解すると、読み書きが安定します。設計では、最初にCompartmentで範囲を固定し、次に対象(*-family)と操作レベル(read/use/manage)を絞る方針を徹底することで、権限の肥大化を防ぎたいと考えています。
情報ソース(リンク)
- Oracle Cloud Infrastructure Documentation:Policies
https://docs.oracle.com/en-us/iaas/Content/Identity/Concepts/policies.htm - Oracle Cloud Infrastructure Documentation:Policy Reference(文法、verbs、resource-types、scope)
https://docs.oracle.com/en-us/iaas/Content/Identity/Reference/policyreference.htm - Oracle Cloud Infrastructure Documentation:Identity Domains
https://docs.oracle.com/en-us/iaas/Content/Identity/Concepts/identitydomains.htm

コメント