0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

みなさん、こんにちは!
OCIのサービスの一つである「IAM」をご存じでしょうか。
「Identity and Access Management」の略で、何となくユーザの認証で使用するサービスと理解している方も多いのではないでしょうか。
言葉は知っているけど詳しくは知らない。そんな方向けにIAMについて解説していきます。

<こんな方におすすめ>

  • エンジニア歴の浅い方
  • 「IAM」をよく知らない方

IAMとは

IAMは、OCI(Oracle Cloud Infrastructure)内で「誰が」「どこに」「どのような操作ができるか」を管理するための仕組みです。
OCI環境の特定のリソース(コンピュート、ネットワーク、ストレージ、データベースなど)に対するアクセス権を管理し、セキュアな運用を実現できます。

IAMの認証・認可

IAMでどのようなことができるかは理解いただけたかと思いますので、次はIAMで実現可能な2つの機能について説明していきます。
IAMには様々な機能が存在していますが、大きく分けて「認証(Authentication)」と「認可(Authorization)」の2つに分類されます。

認証(Authentication)

  • ユーザやエンティティが本人であることを確認する機能です。
  • フェデレーションを使うことで、企業の既存のIDプロバイダ(AD、IDCSなど)でもシングルサインオンすることが可能になります。
  • 具体例としては、ユーザ名+パスワード、APIキー、インスタンス・プリンシパル(ComputeインスタンスがOCIのAPIを呼ぶ際の認証)などの認証方法があります。

認可(Authorization)

  • 認証されたユーザがどのリソースにどの操作を行えるかを決める機能です。
  • OCIでは主に「ポリシー」を使用して実装されることが多く、ユーザやグループとリソースを紐づけて認可を行います。
  • ポリシーは明示的に許可がなければ操作を拒否する「deny」が基本ルールとなっており、不要な権限を付与しない「最小権限」を意識した設計となっています。

IAMのコンポーネント

ここでは認証と認可に分類されるコンポーネント(機能)についてもう少し細かく紹介していきます。
IAMには下記のようなコンポーネントが存在しています。

コンポーネント一覧
image.png
※公式にコンポーネントの「分類」は存在しませんが、解説の便宜上記載しております。ご了承ください。

認証

IAMの「誰が」に相当する部分を決めるコンポーネントになります。
ユーザ、グループと言ったお馴染みのワード以外に、様々な認証対象をまとめるプリンシパルやアイデンティティ・ドメインが存在していますので、注意してください。

  • グループ(Group)
    ・ユーザをまとめる単位。
    ・ポリシーでは「group X」として定義する。
    ・使用例としては開発者グループ、運用グループ、読み取り専用グループなどがある。

  • 動的グループ(Dynamic Group)
    ・インスタンスや他のOCIリソースの属性(インスタンスのタグやコンパートメントなど)に基づき自動でメンバーが決まるグループ。
    ・インスタンスを"ユーザ"のように扱うために使用される機能。
    ・主に「インスタンス・プリンシパル」でOCI APIを呼ぶ際の権限付与に使う

  • プリンシパル(Principal)
    ・認証された主体(ユーザ、動的グループ、サービスプリンシパルなど)をまとめて扱うための単位。
    ・ポリシーではプリンシパルに対して許可(allow)や拒否(deny)を定義する。

  • アイデンティティ・ドメイン(Identity Domain)
    ・ユーザやグループなどのアイデンティティ管理の範囲を示す論理単位。
    ・大規模な組織での使用を想定しており、組織の要件に応じて、管理の切り分けや外部連携を行うことが可能。

認可

IAMの「どこに」に相当する部分を決めるコンポーネントになります。

  • リソース(Resource)
    ・OCI上の実体(コンピュート、ブロック・ストレージ、オブジェクトストレージ、VCN、ロードバランサーなど)を示す。
    ・ポリシーでは特定の種類のリソース(バケット、インスタンスなど)を指定する。

  • コンパートメント(Compartment)
    ・リソースを論理的に分離するための単位。
    ・アクセス制御、請求、ライフサイクル管理などで使用される。
    ・大きな組織ではプロジェクト/チーム/環境(dev/prod)ごとにリソース分けて管理することが可能。

権限制御

IAMの「どのような操作ができるか」に当たる部分になります。
権限制御の軸となるポリシーについてはしっかり覚えておくと良いと思います。

  • ポリシー(Policy)
    ・「誰が(プリンシパル)どこで(リソース/コンパートメント)何ができるか(アクション)」を文で記述する機能。
    ・ポリシー最小権限や役割ベースを意識した設計となっている。
    ・下記のような構文でルールを定義する。
     allow group Devs to manage instances in compartment ProjectA

  • ネットワーク・ソース(Network Source)
    ・ポリシーに条件として組み入れられる、アクセス元のIPレンジやVCN等の制限。
    ・管理コンソールやAPIアクセスを特定のネットワークからのみ許可したい場合に利用。

  • フェデレーション(Federation)
    ・外部のアイデンティティプロバイダ(例:Active Directory、SAML/OIDC対応)と連携して認証を委譲。
    ・中央のIdPでユーザ管理を行い、OCI側は認可(ポリシー)に集中できる。SSO運用や既存ID基盤活用に便利。

まとめ

IAMについて解説してきましたが、いかがでしたでしょうか。
IAMはOCIのリソースへのアクセスをきめ細かく管理する仕組みとなっており、機能を組み合わせ下記を実現できます。

  • 最小権限
  • 運用しやすさ
  • セキュリティ

詳しく学習したい方は、以下のURLからOracle社が提供しているトレーニング資料(Become an OCI Architect Associate)を、ご覧いただけると理解が深まると思います。
https://www.oracle.com/jp/education/training/oracle-cloud-infrastructure/
image.png
出典:Oracle Cloud Infrastructureのトレーニングと認定資格
皆様がOCIのイメージを掴む手助けとなれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?