ロールベース アクセス制御を構成する

以下の手順では、Kf Space でロールベース アクセス制御(RBAC)を構成する方法について説明します。

始める前に

GKE RBAC ガイドに従って操作した後、次の手順に進んでください。

Identity and Access Management(IAM)を構成する

プロジェクト レベルで GKE クラスタを確認するには、Kf RBAC で付与される権限に加えて、ユーザー、グループ、サービス アカウントも認証する必要があります。この要件は、GKE RBAC を構成する場合と同じです。つまり、ユーザーやグループには、クラスタを含むプロジェクトで container.clusters.get 以上の IAM 権限を持っている必要があります。この権限は、container.clusterViewer ロールなど、より高い権限があるロールに含まれています。詳細については、Identity and Access Management とのやり取りをご覧ください。

ユーザーまたはグループに container.clusterViewer を割り当てます。

gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
  --role="container.clusterViewer" \
  --member="${MEMBER}"

メンバー値の例を次に示します。

  • user:test-user@gmail.com
  • group:admins@example.com
  • serviceAccount:test123@example.domain.com

SpaceManager として Space のメンバーシップを管理する

クラスタ管理者ロール、すなわち SpaceManager ロールを持つメンバーは、ユーザー、グループ、サービス アカウントにロールを割り当てることができます。

kf set-space-role MEMBER -t [Group|ServiceAccount|User]

クラスタ管理者ロール、すなわち SpaceManager ロールを持つメンバーは、ロールからメンバーを削除できます。

kf unset-space-role MEMBER -t [Group|ServiceAccount|User]

Space 内のメンバーとそのロールを確認できます。

kf space-users

SpaceDeveloper ロールをユーザーに割り当てます。

kf set-space-role alice@example.com SpaceDeveloper

SpaceDeveloper ロールをグループに割り当てます。

kf set-space-role devs@example.com SpaceDeveloper -t Group

SpaceDeveloper ロールをサービス アカウントに割り当てます。

kf set-space-role sa-dev@example.domain.com SpaceDeveloper -t ServiceAccount

SpaceDeveloper としてのアプリ開発

SpaceDeveloper ロールを持つメンバーは、Space 内で Kf アプリ開発オペレーションを実行できます。

アプリを push するには:

kf push app_name -p [PATH_TO_APP_ROOT_DIRECTORY]

アプリのログを表示するには、posix-terminal kf logs app_name を使用します。

アプリを実行している Kubernetes Pod に SSH 接続するには、posix-terminal kf ssh app_name を使用します。

使用可能なサービス ブローカーを表示するには、次のコマンドを使用します。

kf marketplace

SpaceManager または SpaceAuditor としてアプリを表示する

SpaceManager または SpaceAuditor のロールを持つメンバーは、Space 内の利用可能なアプリを表示できます。

kf apps

クラスタ内の Kf Spaces を表示する

すべてのロール(SpaceManagerSpaceDeveloperSpaceAuditor)は、クラスタ内の利用可能な Kf Space を表示できます。

kf spaces

Space 内の Space メンバーとそのロールを表示します。

kf space-users

権限借用フラグ

メンバーの権限を確認するには、より高い権限を与えられたメンバーが権限借用フラグ --as--as-group を使用して別のメンバーの権限をテストします。

たとえば、クラスタ管理者は、ユーザー(ユーザー名: bob)がアプリの push 権限を持っているかどうかを確認できます。

kf push APP_NAME --as bob

他のメンバーに権限を割り当てる権限がグループ(manager-group@example.com)にあることを確認します。

kf set-space-role bob SpaceDeveloper --as-group manager-group@example.com