【GCP】【OCI】IAMの比較
ここでは、GCPとOCIのIAMについて比較してみます。お互いのIAMの深い比較というよりは、使用する上で必要な考え方について説明します。
IAMとはなにか
IAM(Identity and Access Management)。アデンティティ情報や、情報へのアクセス権限の管理を行う。
パブリッククラウド(例:OCI/GCP)では、クラウド上のリソースに対して、どのユーザがどんな操作をすることができるのかを定義して管理を行います。そうすることで、リソースへのアクセスを、アクセスすべきユーザのみに絞ることができます。
GCPのIAM
Cloud IAM を使用すると、特定の GCP リソースに対するアクセス権をきめ細かく付与し、他のリソースへの望ましくないアクセスを防ぐことができます。Cloud IAM では「最小権限」のセキュリティ原則を導入でき、リソースに対する必要なアクセス権のみを付与できます
ここに書かれているように、GCPにおいて最小権限での運用を勧められています。原則のため、もちろん例外もあります。これは追々説明します。
OCIのIAM
OCIのIAMに関するドキュメントはこちらです。和訳が変な感じですが、マウスオーバーすると英文が表示されるので意味がわからない箇所は英文を読んだほうがわかりやすいかも。
リソース一覧
OCIでは、下記リソースが存在します。GCPと分け方そのものが異なりますが、ここで記載した項目はあくまで公式の引用だからです。
- リソース
- ユーザ
- グループ
- 動的グループ
- コンパートメント
- テナンシ
- ポリシー
- ホーム・リージョン
- フェデレーション
2つのIAMの違い
仕様の違い
例えばですが、GCPではユーザ単位でも権限の付与ができますし、メンバ(IDにあたるアカウント)をグループに登録してそのグループに対して権限を付与することもできます。後者のやり方のほうがGoogleとしての推奨方法です。
ですが、OCIだとユーザ単位での設定はできず、グループに権限を付与し、そのグループにメンバ(アカウント)を所属させることでメンバの権限をコントロールしています。(最初はメンバ単位でもできると思ったけど、ドキュメント読んだりコンソール画面に行ってもやはりグループ単位でしたできなさそう)
言葉の意味の違い
上記で記載した権限ですが、これはGCPとOCIで言葉が異なります。下記が対になっている言葉です。
- GCP 役割
- OCI ポリシー
つまり、GCPの場合グループに付与する権限は役割と呼びますが、OCIではグループに付与する権限をポリシーと呼びます。
ちょっと厄介なのが、GCPにもポリシーという言葉を別の概念で使っていることです。GCPの場合はメンバと役割のバインディングリストになります。(組み合わせのリスト:例としてGoogleアカウントA+RoleA、GoogleアカウントB+RoleBという組み合わせのリストのこと)
有効範囲の違い
GCPでのポリシー(アカウントと役割のバインド)は組織レベル、フォルダレベル、プロジェクト レベル、リソースレベルで設定が可能です。たとえば、階層構造でいうとリソースの上にプロジェクト、プロジェクトの上にフォルダという階層になっているのですが上のレイヤで設定したポリシーは下の階層で引き継がれます。そのため、フォルダAに対して、ユーザAがComputeEngineを操作するための権限を付けた場合、フォルダAに所属するプロジェクトすべてでユーザAはComputeEngineを操作することができるようになります。
OCIでは、テナンシとコンパートメントに対しての権限付与となります。コンパートメントというのは、OCIのテナンシの中に作成されたリソースを論理的に分割する単位です。ここも階層構造となっていて、コンパートメントの上にテナンシがあります。そのため、テナンシにつけた権限は、その下にある全てのコンパートメントでも同様の権限が付与されます。