views4GCPのストレージサービスについてまとめてみた。Exp:71334新しい物好きなエンジニアですTweetShareHatena注意この記事は2017年10月4日に更新されたもので、内容が古い可能性がありますのでご注意ください。IAMを利用されている方も多いことでしょう。IAMの登場以前はプロジェクトオーナー、プロジェクト編集者、プロジェクト閲覧者の3種類の役割しかユーザーに付与することが出来ず、不必要なサービスの権限も併せて付与することしか出来ないことも多々ありました。Engine(GCE)の場合、GCE管理者(GCEのリソース全てを管理することができる)やGCEネットワーク管理者(GCEのネットワークリソース全てを管理できる)、GCEイメージユーザー(GCEイメージの読み取り、使用のみ許可)といった最低限の権限付与が可能になりました。そんなCloudIAMでも満足出来ないあなたの為に、本記事ではより柔軟でセキュアな権限管理をすることができるカスタムロールについてご紹介します。IAMのカスタムロール機能とは1つ以上の権限を持つロールを組織もしくはプロジェクトレベルで作成し、それをユーザーに適用することができる機能です。Foldersまた、組織やフォルダ、プロジェクトの関係性は上図のような構造になっており、組織IAMで作成したカスタムロールはその配下のフォルダやプロジェクトで利用することが出来ます。組織IAMで設定した役割も同様にその配下のフォルダとプロジェクトに引き継がれます。ちなみに組織で設定されているIAMよりも強い役割がその配下のプロジェクトで設定されていた場合、そのプロジェクトではより強い方の役割が適用されます。※2017年9月29日現在、カスタムロールはbeta版の機能ですカスタムロールの基本概念は3つ繰り返しになりますが、カスタムロールは1つ以上のIAM権限を組み合わせることで作成します。IAMでは権限を以下の形式で表現します。compute.instances.list権限を持つユーザはGCEインスタンスの一覧表示することができ、compute.instances.stop権限を持つユーザはGCEインスタンスを停止することが出来ます。このような権限の組み合わせによりユーザはリソースに対しての特定の操作を実行することが出来ます。カスタムロールの作成方法ここまでカスタムロールの概要について説明してきましたが、この章では実際にどのようにカスタムロールを作成するか、説明します。カスタムロールの作成方法としては以下の2種類があります。本記事ではコンソールからの作成方法についてご紹介いたします。今回はプロジェクトのIAMで作成します。APIにご興味ある方は以下のドキュメントをご参照ください。(projectnameにはIAMを作成したいプロジェクトに置き換えてください)画面上部の「役割を作成」ボタンを押下します。作成日や作成した意図などを記述。付与する権限このうちロール名は後から変更できますが、ロールIDは変更できません。リリース段階はあくまで備考のようなもので機能にさほど影響のあるものではありませんが、無効化するとそのロールを付与してもそのロールの権限は付与されなくなります。各項目を入力したら追加したい権限を選びます。方法としては...フィルタ等を使いながら権限を選んでいくか...既存の役割をベースに(この場合はプロジェクト編集者)権限を選んでいくか...になりますが、一覧性が低かったり各権限の意味が分かりにくいなと思うところも正直あります。個人的には権限の選択部分をYAMLやJSONファイルで管理できるようになってほしいなぁと思いますが、まぁ今後に期待ですね(まだBetaですし)。カスタムロールが有効なユースケース細かな権限をユーザに設定することが出来るというのはお分かり頂けたかと思います。これって本当に便利なの?実際にどういうケースで使われるの?という方もいるかもしれません。そんな方々の為に想定されるユースケースを挙げたいと思います。多くの場合こちらのケースに当てはまると思います。あるユーザ(グループ)にサービスの編集者権限を適用していたとします。それがある日そのサービスのオーナーのみ許可されている一部の操作をお願いしたい、という事象が出てきました。オーナーにしてしまうと必要以上の権限を与えることになってしまい、多少のリスクがあります。カスタムロール登場以前だとオーナーにその操作を任せるか、一時的にオーナー権限を与えてその後編集者に戻す、といった対応が必要でした。カスタムロールを使えばそのような対応を考える必要がありません。そのサービスの編集者が許可されている役割に加えて、追加で許可したい役割のみを加えたカスタムロールを作成すれば良いのです。現在IAMの仕様上、プロジェクトオーナーにはグループアドレスを設定することが出来ません。いって1アカウントずつプロジェクトのオーナーとして登録していくのは手間ですしメンバーの管理も大変になります。そこでこれはちょっとした豆知識ですが、既存の定義済みのプロジェクトオーナーにはグループアドレスを設定することは出来ないのですが、プロジェクトオーナーと同等の権限を持ったカスタムロールであればグループアドレスを設定することが出来ます。これによりオーナーと同等の権限を持った役割をグループアドレスに設定することが出来ます。Ace)というGCPの導入・運用支援サービスを提供しております。お悩み・ご相談がある場合はこちらまでお問い合わせください。クラウドエース・吉積情報では各職種絶賛採用中です。ご興味ある方はお気軽にお問い合わせください。