IAM-K8S-ACCESS

Kubernetes リソースへのアクセス権限を IAM リソースに付与するためのパッケージです。

対応サービス

パッケージの機能

本パッケージでは、IAM リソースに対してkubernetes APIへのアクセス権限を付与するための機能を提供します。

  • IAM Roleに対するkubernetes API へのアクセス権限の付与(AWS)

アクセスレベルの設定

action パラメータ:

アクセスレベルは、運用シーンに応じて以下の2種類から選択できます:

  • read - 読み取り専用 (get, list, watch)

  • admin - 書き込み・削除など全操作が許可

プリセット権限

preset: all

このプリセットは、管理者向けに設計されています。 全リソースに対する操作権限を付与するため、システム全体の運用管理に適しています。

  • リソース制限: なし

  • Namespace 制限: なし

preset: application

このプリセットは、アプリケーションエンジニア向けに設計されています。 アプリケーションのデバッグやログ確認等に必要となる最小限のアクセス権限を付与することで、過剰な権限を排除し安全に運用できます。

対象リソースの制限

  • 対象リソース: Deployment、Pod、ConfigMap、Service、Secret、HelmRelease, Application - アプリケーションの運用に必要なリソースに対してのみアクセスを許可します。

Namespaceの制限

  • 対象Namespace: targetNamespaces に指定されたNamespaceのみアクセス可能 - 指定された領域に限定して権限を付与し、クラスタ全体への不要なアクセスを防ぎます。

  • 追加アクセス: - Terraformリソース: managed-system Namespaceで共通管理のため、追加でアクセス権限を付与 - Kustomization, GitRepositoryリソース: flux-system Namespaceで共通管理のため、追加でアクセス権限を付与

アクセスレベルの設定

action パラメータ:

  • read: 読み取り専用(get, list, watch)

  • admin: 書き込みや削除など全ての操作を許可

    → 運用シーンに応じた権限レベルを選択可能です。

カスタムロール

  • customRbacRules の設定によりカスタムロールを追加することができます。

  • プリセットと併用する場合、プリセット権限とカスタムロールの両方が適用されます。

Values

Default values

# roleName: ""          # アクセス許可するAWS IAM Role名. 同じアカウントのみ
rbac:
  # action: read, admin のいずれか
  #   * "read": 読み取り専用。get, list, watch などの読み取り操作のみ許可します。
  #   * "admin": フルアクセス。読み取りに加え、書き込みや削除など全ての操作を許可します。
  action: read  # Options: "read", "admin"

  # preset: application, admin のいずれか
  #   * "application": アプリケーションエンジニア向けの設定です。
  #        必要最小限のリソース(デバッグ・監視用など)のみに限定し、
  #        対象となる複数のnamespaceにのみ適用されます。
  #   * "admin": 管理者向け設定で、全リソースに対するアクセスを許可します。
  # preset: application  # Options: "application", "all"

  # targetNamespaces:
  #   presetが "application" の場合にのみ有効です。
  #   ここにリストされたネームスペースに対して、RBACが適用されます。
  targetNamespaces: []
    # - app1
    # - app2

# customRbacRules:
#   任意の RBAC ルールを追加できます。
#   各エントリは以下のフィールドを持ちます:
#     namespace: このルールを適用する namespace。未指定の場合は ClusterRole として扱われます。ただし、作成できるClusterRoleは1つのみです。
#     rules: Kubernetes RBAC ルールのリスト
customRbacRules: []
  # - namespace: app1
  #   rules:
  #     - apiGroups:
  #         - ""
  #       resources:
  #         - persistentvolumeclaims
  #       verbs:
  #         - get
  #         - list
  # - rules:
  #     - apiGroups:
  #         - batch
  #       resources:
  #         - jobs
  #       verbs:
  #         - create
  #         - delete

Schema reference

Values

https://github.com/sbopsv/MASTER-CONTAINER-HELM-iam-k8s-access/blob/master/values.schema.json

type

object

properties

  • roleName

アクセス許可するAWS IAM Role名。同一アカウント内のRoleを指定。

type

string

  • rbac

RBAC(Role Based Access Control)の設定を定義。

type

object

properties

  • action

実行する操作のレベル。'read'は読み取り専用(get, list, watch)、'admin'は全ての操作(書き込み、削除を含む)を許可。

type

string

enum

read, admin

  • preset

RBACのプリセット設定。'application'はアプリケーションエンジニア向けの最小限アクセス、'all'は管理者向けの全リソースアクセス

type

string

enum

application, all

  • targetNamespaces

presetが'application'の場合に適用されるnamespaceのリスト。

type

array

items

type

string

  • customRbacRules

追加のRBACルールを定義します。namespaceが指定されていない場合、クラスタ全体に適用。

type

array

items

type

object

properties

  • namespace

このカスタムRBACルールを適用するnamespace。未指定の場合はClusterRoleとして扱われる。

type

string

  • rules

KubernetesのRBACルールのリストを定義。

type

array

items

type

object

properties

  • apiGroups

このルールが適用されるAPIグループのリスト。

type

array

items

type

string

  • resources

対象となるリソースのリスト。

type

array

items

type

string

  • verbs

リソースに対して許可する操作(verb)のリスト。

type

array

items

type

string

Example

Example1-1. AWS IAM

apiVersion: managed.msp.sbopsv/v1alpha1
kind: IamK8sAccess
metadata:
  name: test-access001
  namespace: staging
spec:
  roleName: test-role001
  rbac:
    preset: application
    action: read
    targetNamespaces:
      - staging
  customRbacRules: []

Change Log

0.1.2

Released on 2025-08-07

What's Changed

パッケージ内で利用しているライブラリの更新を行いました。

0.1.1

Released on 2025-05-15

What's Changed

パッケージ内で利用しているライブラリの更新を行いました。