<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>IAM on Marketechlabo</title><link>https://www.marketechlabo.com/tags/iam/</link><description>Recent content in IAM on Marketechlabo</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Wed, 12 Jan 2022 00:00:00 +0900</lastBuildDate><atom:link href="https://www.marketechlabo.com/tags/iam/index.xml" rel="self" type="application/rss+xml"/><item><title>GCPのIAMポリシー</title><link>https://www.marketechlabo.com/server-infrastructure/gcp-iam-policy/</link><pubDate>Wed, 12 Jan 2022 00:00:00 +0900</pubDate><guid>https://www.marketechlabo.com/server-infrastructure/gcp-iam-policy/</guid><description>
&lt;h1 id="gcpのiamポリシー権限設定"&gt;GCPのIAMポリシー（権限設定）&lt;/h1&gt;
&lt;h2 id="gcpにおける階層と言葉の定義"&gt;GCPにおける階層と言葉の定義&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;組織&lt;/li&gt;
&lt;li&gt;（フォルダ）&lt;/li&gt;
&lt;li&gt;プロジェクト&lt;/li&gt;
&lt;li&gt;各種リソース
&lt;ul&gt;
&lt;li&gt;Cloud Storage&lt;/li&gt;
&lt;li&gt;BigQuery&lt;/li&gt;
&lt;li&gt;Compute Engine&lt;br&gt;
:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="iam-resource-hierarchy.png"
class="image_figure image_internal image_unprocessed"
src="/images/gcp/iam-resource-hierarchy.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
プロジェクトとリソースを中心に考える。
フォルダや組織はプロジェクトを便宜的に束ねるもの。フォルダや組織は設定しなくてもいい
→後述するが、組織／プロジェクト／リソース単位で権限設定ができる&lt;/p&gt;
&lt;h2 id="アカウント"&gt;アカウント&lt;/h2&gt;
&lt;p&gt;アカウントには2種類&lt;/p&gt;
&lt;h3 id="ユーザーアカウント"&gt;ユーザーアカウント&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Googleのログイン画面からログインできるアカウント&lt;/li&gt;
&lt;li&gt;人間ユーザ。異動や退職とともにアカウントがなくなるケースも想定する必要がある&lt;/li&gt;
&lt;li&gt;一部のGoogleアカウントではアカウント単位のコストが発生することも想定する（つまり有限個しか発行できない）&lt;/li&gt;
&lt;li&gt;Googleアカウントである必要がある→認証はメールアドレスとパスワードで行う
&lt;ul&gt;
&lt;li&gt;Gmail&lt;/li&gt;
&lt;li&gt;Workspace&lt;/li&gt;
&lt;li&gt;Cloud Identity&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="サービスアカウント"&gt;サービスアカウント&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;システムがGCPにアクセスする際に使うアカウント&lt;/li&gt;
&lt;li&gt;Googleのログイン画面からログインすることはない&lt;/li&gt;
&lt;li&gt;異動や退職で使えなくなるケースはない&lt;/li&gt;
&lt;li&gt;メールアドレス形式&lt;code&gt;service-account-name@project-id.iam.gserviceaccount.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;認証は主にJSONの鍵ファイルを使って行う&lt;/li&gt;
&lt;li&gt;アカウントごとのコストは発生しないので実質無限個発行できると考えていい&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="アカウントと権限の紐付けのパターン"&gt;アカウントと権限の紐付けのパターン&lt;/h2&gt;
&lt;p&gt;出てくる言葉&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アカウント&lt;/li&gt;
&lt;li&gt;グループ&lt;/li&gt;
&lt;li&gt;ロール&lt;/li&gt;
&lt;li&gt;権限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目的：アカウントと権限を紐づけること。その間のハブとしてグループやロールがあると考えればいい
アカウントと権限がある
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="iam-policy-1.png"
class="image_figure image_internal image_unprocessed"
src="/images/gcp/iam-policy-1.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
これをこのように紐づけたい
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="iam-policy-2.png"
class="image_figure image_internal image_unprocessed"
src="/images/gcp/iam-policy-2.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
複数のアカウントに対して
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="iam-policy-3.png"
class="image_figure image_internal image_unprocessed"
src="/images/gcp/iam-policy-3.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="ロール"&gt;ロール&lt;/h3&gt;
&lt;p&gt;直接アカウントと権限を紐づけるのではなく、ロールを介して設定する
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="iam-policy-4.png"
class="image_figure image_internal image_unprocessed"
src="/images/gcp/iam-policy-4.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
ロールの例
ストレージオブジェクト閲覧者 &lt;code&gt;roles/storage.objectViewer&lt;/code&gt;
付随する権限&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;resourcemanager.projects.get&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;resourcemanager.projects.list&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;storage.objects.get&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;storage.objects.list&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cloud Storageでファイル一覧を表示してダウンロードするには複数の権限を設定する必要がある。それを「オブジェクト閲覧者」という一般的な役割単位で束ねたものをロールという。
GCPには&lt;a href="https://cloud.google.com/iam/docs/understanding-roles?hl=ja#predefined_roles"&gt;事前定義ロール&lt;/a&gt;が用意されている。これ以外に柔軟にユーザ定義ロールを設定することも可能。
※基本ロールは使わない（実運用には粒度が荒すぎる）
つまりロールというのは、GCP内の細かい権限体系を使いやすい単位のちょうどいい粒度にまとめたものである。&lt;/p&gt;</description></item></channel></rss>