ie_test
2018年8月1日水曜日
GCP のアカウント制御について
GCP のアカウント制御について # 概要 GCP のアカウント制御がどんな形で行われるのかを調査したところ IAM が重要な概念ということがわかってきた。なので IAM を中心として述べる。 # GCP の IAM の概要 Identity and Access Management の概略を以下に基づいて述べる。 (https://cloud.google.com/storage/docs/access-control/iam?hl=ja&_ga=2.134845235.-393943616.1529019540&_gac=1.11862784.1529049583.EAIaIQobChMIy6GwvZnV2wIVVQwrCh17AgL9EAAYASAAEgLRJvD_BwE) IAM ポリシーを設定することで、ユーザーがその特定のバケットとその中のオブジェクトに対して行うことができる操作を制限できる。 ## IAMポリシーの基本概念は「メンバー」と「役割」の二つ IAMポリシーの「メンバー」として「個々のユーザー」、「グループ」、「ドメイン」を設定できる。 この「メンバー」に対して「役割」を割り当てることでIAMポリシーを設定することになる。 「役割」は、1 つ以上の「権限」をまとめたもの。「権限」は IAM の基本単位。 「権限」の具体例としては 「storage.objects.create」(オブジェクトの作成権限) があり、この「権限」は「roles/storage.objectCreator」や「roles/storage.objectAdmin」といった「役割」に含まれる。 具体的な「メンバー」「役割」については gcp コンソールの「IAMと役割」のページで確認できる。 ## 「メンバー」について 「メンバー」がどういったものになるかわかりにくいので具体例を書く。 例えば gsutil でバケットへの書き込み権限を得たい時、 https://ietoa.blogspot.com/2018/07/gcp-google-cloud-platform.html の記事のように gcloud auth login とコマンドを打つ。 登録メールが「my_test111@yahoo.co.jp」といった場合, この場合、ブラウザから「my_test111@yahoo.co.jp」としての登録許可を求めてくる。 つまり、この操作は「メンバー」として「my_test111@yahoo.co.jp」と認識して良いかの許可を求めていることになる。 なのでこの後は「メンバー」が「my_test111@yahoo.co.jp」としての権限で操作できるようになるということ。 ## 「役割」について 「役割」は資源に対するアクセス権を表す。 ## サービスアカウントについて IAM と同時に GCP のアカウント制御を考える上でサービスアカウントの概念は重要である。 https://cloud.google.com/docs/authentication/ 上記によれば 「サービス アカウントとは、エンドユーザーを表すのではなく、アプリケーションを表す Google アカウントです。」ということ。。まあよくわからないですが、「メンバー」としても「役割」としても機能します。 デフォルトのサービスアカウントは以下のサイトにあるように決まった名前で作られる。 https://qiita.com/NagaokaKenichi/items/02e723511d244c82bd82 例えば 111078970062-compute@developer.gserviceaccount.com といった名前になる。 注意: 上記のはデタラメな数字になってます。 # 具体例 ## gcloud コマンドにおける IAM 以下のコマンドでVMインスタンスを作成する場合を考える。 ``` gcloud --verbosity debug compute --project "watashi_no_project" \ instances create "my-test-instance2" --zone "us-central1-a"\ --custom-cpu 2 --custom-memory 52 --custom-extensions \ --maintenance-policy=TERMINATE --accelerator=type=nvidia-tesla-k80,count=1 \ --image=ubuntu-1604-xenial-v20180612 --image-project=ubuntu-os-cloud --boot-disk-size=40GB ``` (https://qiita.com/NagaokaKenichi/items/02e723511d244c82bd82) 上記のサイトの説明によれば、個人の googleアカウント(例: my_test111@yahoo.co.jp)が「メンバー」となり、「役割」としてのサービスアカウント(例:111078970062-compute@developer.gserviceaccount.com) を取得し、 このサービスアカウントが「メンバー」として「VMインスタンス作成」の「役割」を持っているので実行できるといった感じになる。 実際、以下のようにコマンドを実行するとアカウントは my_test111@yahoo.co.jp であることが確認できる。 ``` bash-3.2$ gcloud auth list Credentialed Accounts ACTIVE ACCOUNT * my_test111@yahoo.co.jp To set the active account, run: $ gcloud config set account `ACCOUNT` ``` また作られたVMインスタンスをチェックし、サービスアカウントをみて見るとデフォルトのサービスアカウントである 111078970062-compute@developer.gserviceaccount.com となっていることが確認できる。 ## 「メンバー」として特定のサービスアカウントを使う方法 以下のページが詳しい。 http://kikumoto.hatenablog.com/entry/2015/10/05/203545 # その他 ## GCP においてのアクセス制御の他の方法 ACL( access control list ) というものがあったが、 今は IAM で設定することが推奨されている。(ACL と併用できるが、基本的に ACL はレガシー扱い) http://iga-ninja.hatenablog.com/entry/2017/10/23/195630
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿