

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ロールベースアクセスコントロール (RBAC、role-based access control) を使用したクラスターのアクセス許可の設定
<a name="spark-operator-security-rbac"></a>

Spark 演算子をデプロイするために、Amazon EMR on EKS は Spark 演算子と Spark アプリケーション用に 2 つのロールとサービスアカウントを作成します。

**Topics**
+ [演算子サービスアカウントとロール](#spark-operator-sa-oper)
+ [Spark サービスのアカウントとロール](#spark-operator-sa-spark)

## 演算子サービスアカウントとロール
<a name="spark-operator-sa-oper"></a>

Amazon EMR on EKS は、Spark ジョブやサービスなどの他のリソース用の `SparkApplications` を管理するための**演算子サービスアカウントとロール**を作成します。

このサービスアカウントのデフォルト名は `emr-containers-sa-spark-operator` です。

このサービスロールには、以下の規則が適用されます。

```
 rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - services
  - configmaps
  - secrets
  verbs:
  - create
  - get
  - delete
  - update
- apiGroups:
  - extensions
  - networking.k8s.io
  resources:
  - ingresses
  verbs:
  - create
  - get
  - delete
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - update
  - patch
- apiGroups:
  - ""
  resources:
  - resourcequotas
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - create
  - get
  - update
  - delete
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - mutatingwebhookconfigurations
  - validatingwebhookconfigurations
  verbs:
  - create
  - get
  - update
  - delete
- apiGroups:
  - sparkoperator.k8s.io
  resources:
  - sparkapplications
  - sparkapplications/status
  - scheduledsparkapplications
  - scheduledsparkapplications/status
  verbs:
  - "*"
  {{- if .Values.batchScheduler.enable }}
  # required for the `volcano` batch scheduler
- apiGroups:
  - scheduling.incubator.k8s.io
  - scheduling.sigs.dev
  - scheduling.volcano.sh
  resources:
  - podgroups
  verbs:
  - "*"
  {{- end }}
  {{ if .Values.webhook.enable }}
- apiGroups:
  - batch
  resources:
  - jobs
  verbs:
  - delete
  {{- end }}
```

## Spark サービスのアカウントとロール
<a name="spark-operator-sa-spark"></a>

Spark ドライバーポッドには、ポッドと同じ名前空間にある Kubernetes サービスアカウントが必要です。このサービスアカウントには、エグゼキューターポッドの作成、取得、一覧表示、パッチ適用、削除を行う権限と、ドライバー用の Kubernetes ヘッドレスサービスを作成する権限が必要です。ポッドの名前空間のデフォルトサービスアカウントに必要な権限がない限り、ドライバーは失敗し、サービスアカウントなしで終了します。

このサービスアカウントのデフォルト名は `emr-containers-sa-spark` です。

このサービスロールには、以下の規則が適用されます。

```
 rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - services
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - persistentvolumeclaims
  verbs:
  - "*"
```