10.3. 서비스 계정에 역할을 부여하는 예

일반 사용자 계정에 역할을 부여하는 것과 같은 방식으로 서비스 계정에 역할을 부여할 수 있습니다.

  • 현재 프로젝트의 서비스 계정을 수정할 수 있습니다. 예를 들어, top-secret 개체에서 robot 서비스 계정에 view 역할을 추가하려면 다음을 수행합니다.

    $ oc policy add-role-to-user view system:serviceaccount:top-secret:robot
    작은 정보

    다음 YAML을 적용하여 역할을 추가할 수도 있습니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: view
      namespace: top-secret
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: view
    subjects:
    - kind: ServiceAccount
      name: robot
      namespace: top-secret
  • 프로젝트의 특정 서비스 계정에 대한 액세스 권한을 부여할 수도 있습니다. 예를 들어 서비스 계정이 속하는 프로젝트에서 -z 플래그를 사용하고 <service_account_name>을 지정합니다.

    $ oc policy add-role-to-user <role_name> -z <service_account_name>
    중요

    프로젝트의 특정 서비스 계정에 대한 액세스 권한을 부여하려면 -z 플래그를 사용합니다. 이 플래그를 사용하면 오타를 방지하고 지정된 서비스 계정에만 액세스 권한을 부여할 수 있습니다.

    작은 정보

    다음 YAML을 적용하여 역할을 추가할 수도 있습니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: <rolebinding_name>
      namespace: <current_project_name>
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: <role_name>
    subjects:
    - kind: ServiceAccount
      name: <service_account_name>
      namespace: <current_project_name>
  • 다른 네임스페이스를 수정하려면 다음 예제와 같이 -n 옵션을 사용하여 적용되는 프로젝트 네임스페이스를 나타낼 수 있습니다.

    • 예를 들어 모든 프로젝트의 모든 서비스 계정에서 my-project 프로젝트의 리소스를 볼 수 있도록 하려면 다음을 실행합니다.

      $ oc policy add-role-to-group view system:serviceaccounts -n my-project
      작은 정보

      다음 YAML을 적용하여 역할을 추가할 수도 있습니다.

      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: view
        namespace: my-project
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: view
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: Group
        name: system:serviceaccounts
    • managers 프로젝트의 모든 서비스 계정에서 my-project 프로젝트의 리소스를 편집할 수 있도록 하려면 다음을 실행합니다.

      $ oc policy add-role-to-group edit system:serviceaccounts:managers -n my-project
      작은 정보

      다음 YAML을 적용하여 역할을 추가할 수도 있습니다.

      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: edit
        namespace: my-project
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: edit
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: Group
        name: system:serviceaccounts:managers