Netskope GCP CSA コンプライアンス監査のために、お客様に代わってAPI呼び出しを行うためのサービスアカウント。 顧客は、以下のようなGCPリソース階層を持っています。
Netskopeに提供されたサービスアカウントは、組織範囲(testkope01.com)で役割割り当て(Project > Browser)を持つことがあります。(下の画像を参照)。しかし、顧客が特定のフォルダ(アーカイブ)や、Netskope CSA製品, に表示されないフォルダやプロジェクトをすべて除外したい場合があり、親組織の役割割り当ては維持しつつも、

IAMポリシーバインディング
GCP では、IAM ポリシー バインディングは、誰(ID) がどのリソースに対してどのようなアクセス(ロール) を持つかを定義することにより、アクセス制御を管理します。 IAM ポリシーは、どのロールがどのメンバーに付与されるかを定義および強制し、このポリシーはリソースに添付されます。
ただし、IAM ポリシーのバインディングは追加のみであり、 Archive フォルダーに対するProject > Browserアクセス許可を拒否するなど、アクセス許可を拒否することはできません。
GCP が IAM で提供するソリューションの 1 つは、 バインディングによって、Google Cloud リソースに対する条件付き属性ベースのアクセス制御を定義し、適用できる条件を設定できる機能です。 条件オブジェクトは以下の構造を持つ。
"condition": {
"title": ...
"description": ...
"expression": ...
}
式フィールドは必須です。これは 属性ベースの 論理式を定義しており、よく ある表現言語(CEL)のサブセットである使うです。
例えば、指定されたプレフィックスで始まる名前のクラウドストレージバケットへのアクセスのみを許可する。
resource.type == "storage.googleapis.com/Bucket" &&
resource.name.startsWith("projects/_/buckets/exampleco-site-assets-")
リソースタグ付け
We would be using IAM Policy Binding Condition expression along with resource tagging to achieve the exclusion use-case.
タグとは、組織、フォルダ、プロジェクトに紐づけられたキーと値のペアであり、リソースに特定のタグがあるかどうかに応じて 条件付きでIAMロールを付与 できます。
その他のリソースは、親組織、フォルダー、およびプロジェクトからタグ値を継承するため、タグを使用してあらゆる Google Cloud リソースへのアクセスを管理できます。
この機能はGoogle Cloudプラットフォームの利用規約の プレGA提供条件 でカバーされているため、以下のステップの前にgcloudコンポーネントの更新を実行してください。
-
顧客組織のタグキーを作成する
gcloud alpha resource-manager tags keys create CSA --parent=organizations/1234567890
Expected Response:
Waiting for TagKey [CSA] to be created...done. createTime: '2021-02-11T10:55:15.548590Z' etag: Fh4S/yQ37EoMRyqu048tSA== name: tagKeys/830385501964 namespacedName: 1234567890/CSA parent: organizations/1234567890 shortName: CSA updateTime: '2021-02-11T10:55:18.850163Z
ハイライト表示されているタグキー名をメモしてください。 -
ステップ1で作成したタグキーに対応するタグ値を作成します。
gcloud alpha resource-manager tags values create NOT --parent=tagKeys/830385501964
Expected Response:
Waiting for TagValue [NOT] to be created...done. createTime: '2021-02-11T11:02:28.552982Z' etag: Xj9So/FDGdu+qtzTyVBXQA== name: tagValues/924420592246 namespacedName: 1234567890/CSA/NOT parent: tagKeys/830385501964 shortName: NOT updateTime: '2021-02-11T11:02:31.087742Z'
ハイライト表示されているタグ値の名前をメモしてください。 -
Archiveフォルダー スコープでタグ バインディングを作成します
gcloud alpha resource-manager tags bindings create --tag-value=tagValues/924420592246 --parent=//cloudresourcemanager.googleapis.com/folders/0987654321
Where 0987654321 is the folder id of the Archive folder
Expected Response:
done: true response: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Ffolders%2F0987654321/tagValues/924420592246 parent: //cloudresourcemanager.googleapis.com/folders/0987654321 tagValue: tagValues/924420592246
-
タグバインディングが適用されているかどうかを確認します。
gcloud alpha resource-manager tags bindings list --parent=//cloudresourcemanager.googleapis.com/folders/0987654321
Expected Response:
tagBindings: - name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Ffolders%2F0987654321/tagValues/924420592246 parent: //cloudresourcemanager.googleapis.com/folders/0987654321 tagValue: tagValues/924420592246
Netskopeサービスアカウントの権限を更新する
Google Cloud Consoleにログインし、組織スコープでNetskopeサービスアカウントの役割割り当てを編集します。
-
組織スコープのIAM & Admin > IAMページに移動し、 Netskopeサービス アカウントの電子メール ID を見つけます。

-
サービスアカウントIAMポリシーバインディングを編集し、各役割割り当てに条件を追加してください(Project > Browser、IAM > Security Reviewer、 Bigquery > Bigquery Metadata Viewer、 Organization Policy > Organisation Policy Viewer)。


-
条件エディタータブに移動し、次のようなCEL式を入力します。
!(resource.matchTagId('tagKeys/830385501964', 'tagValues/924420592246'))
ここで、 tagKeys/830385501964はtag key nameであり、 tagValues/924420592246はtag value nameであり、これらは以前に記録され、アーカイブフォルダに適用されました。 -
Saveをクリックして IAM ポリシーを更新します。
不要なアーカイブフォルダおよびその下のプロジェクト/リソースは、Netskopeサービスアカウントからアクセスできなくなり、CSAスキャンにも表示されなくなります。

