3.3. 権限とテナントの設定
TempoStack
または TempoMonolithic
インスタンスをインストールする前に、1 つ以上のテナントを定義し、テナントの読み取りおよび書き込みアクセス権を設定する必要があります。このような認可設定は、Kubernetes のロールベースアクセス制御 (RBAC) のクラスターロールとクラスターロールバインディングを使用して設定できます。デフォルトでは、どのユーザーにも読み取り権限または書き込み権限は付与されません。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。
Red Hat build of OpenTelemetry の OpenTelemetry Collector は、データの書き込み用のサービスアカウントと RBAC を使用して、トレースデータを TempoStack
または TempoMonolithic
インスタンスに送信できます。
コンポーネント | Tempo Gateway サービス | OpenShift OAuth | TokenReview API | SubjectAccessReview API |
---|---|---|---|---|
認証 | X | X | X | |
認可 | X | X |
3.3.1. テナントの読み取り権限の設定
テナントの読み取り権限は、Web コンソールの Administrator ビューまたはコマンドラインから設定できます。
前提条件
-
cluster-admin
ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。 -
Red Hat OpenShift Dedicated の場合、
dedicated-admin
ロールを持つアカウントを使用してログインしている。
手順
任意の値を指定した
tenantName
およびtenantId
パラメーターをTempoStack
カスタムリソース (CR) に追加して、テナントを定義します。TempoStack
CR のテナントの例apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: redmetrics spec: # ... tenants: mode: openshift authentication: - tenantName: dev tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" # ...
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: redmetrics spec: # ... tenants: mode: openshift authentication: - tenantName: dev
1 tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa"
2 # ...
Copy to Clipboard Copied! トレースを読み取るための読み取り (
get
) 権限を持つクラスターロールにテナントを追加します。ClusterRole
リソースの RBAC 設定の例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: tempostack-traces-reader rules: - apiGroups: - 'tempo.grafana.com' resources: - dev - prod resourceNames: - traces verbs: - 'get'
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: tempostack-traces-reader rules: - apiGroups: - 'tempo.grafana.com' resources:
1 - dev - prod resourceNames: - traces verbs: - 'get'
2 Copy to Clipboard Copied! 上記ステップのクラスターロールのクラスターロールバインディングを定義して、認証されたユーザーにトレースデータの読み取り権限を付与します。
ClusterRoleBinding
リソースの RBAC 設定の例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tempostack-traces-reader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tempostack-traces-reader subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tempostack-traces-reader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tempostack-traces-reader subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated
1 Copy to Clipboard Copied! - 1
- 認証されたユーザー全員に、トレースデータの読み取り権限を付与します。
3.3.2. テナントの書き込み権限の設定
テナントの書き込み権限は、Web コンソールの Administrator ビューまたはコマンドラインから設定できます。
前提条件
-
cluster-admin
ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。 -
Red Hat OpenShift Dedicated の場合、
dedicated-admin
ロールを持つアカウントを使用してログインしている。 - OpenTelemetry Collector をインストールし、権限を持つ許可済みのサービスアカウントを使用するように Collector を設定した。詳細は、Red Hat build of OpenTelemetry ドキュメントの「必要な RBAC リソースの自動作成」を参照してください。
手順
OpenTelemetry Collector で使用するためのサービスアカウントを作成します。
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector namespace: <project_of_opentelemetry_collector_instance>
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector namespace: <project_of_opentelemetry_collector_instance>
Copy to Clipboard Copied! トレースを書き込むための書き込み (
create
) 権限を持つクラスターロールにテナントを追加します。ClusterRole
リソースの RBAC 設定の例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: tempostack-traces-write rules: - apiGroups: - 'tempo.grafana.com' resources: - dev resourceNames: - traces verbs: - 'create'
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: tempostack-traces-write rules: - apiGroups: - 'tempo.grafana.com' resources:
1 - dev resourceNames: - traces verbs: - 'create'
2 Copy to Clipboard Copied! OpenTelemetry Collector のサービスアカウントを割り当てるためのクラスターロールバインディングを定義して、OpenTelemetry Collector に書き込み権限を付与します。
ClusterRoleBinding
リソースの RBAC 設定の例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tempostack-traces roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tempostack-traces-write subjects: - kind: ServiceAccount name: otel-collector namespace: otel
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tempostack-traces roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tempostack-traces-write subjects: - kind: ServiceAccount name: otel-collector
1 namespace: otel
Copy to Clipboard Copied! - 1
- 前のステップで作成したサービスアカウント。これは、クライアントがトレースデータをエクスポートするときに使用されます。
OpenTelemetryCollector
カスタムリソースを次のように設定します。-
トレーシングパイプラインサービスに、
bearertokenauth
エクステンションと有効なトークンを追加します。 -
otlp/otlphttp
エクスポーターにテナント名をX-Scope-OrgID
ヘッダーとして追加します。 有効な認証局ファイルを使用して TLS を有効にします。
OpenTelemetry CR 設定のサンプル
apiVersion: opentelemetry.io/v1beta1 kind: OpenTelemetryCollector metadata: name: cluster-collector namespace: <project_of_tempostack_instance> spec: mode: deployment serviceAccount: otel-collector config: | extensions: bearertokenauth: filename: "/var/run/secrets/kubernetes.io/serviceaccount/token" exporters: otlp/dev: endpoint: sample-gateway.tempo.svc.cluster.local:8090 tls: insecure: false ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt" auth: authenticator: bearertokenauth headers: X-Scope-OrgID: "dev" otlphttp/dev: endpoint: https://sample-gateway.<project_of_tempostack_instance>.svc.cluster.local:8080/api/traces/v1/dev tls: insecure: false ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt" auth: authenticator: bearertokenauth headers: X-Scope-OrgID: "dev" service: extensions: [bearertokenauth] pipelines: traces: exporters: [otlp/dev] # ...
apiVersion: opentelemetry.io/v1beta1 kind: OpenTelemetryCollector metadata: name: cluster-collector namespace: <project_of_tempostack_instance> spec: mode: deployment serviceAccount: otel-collector
1 config: | extensions: bearertokenauth:
2 filename: "/var/run/secrets/kubernetes.io/serviceaccount/token"
3 exporters: otlp/dev:
4 endpoint: sample-gateway.tempo.svc.cluster.local:8090 tls: insecure: false ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
5 auth: authenticator: bearertokenauth headers: X-Scope-OrgID: "dev"
6 otlphttp/dev:
7 endpoint: https://sample-gateway.<project_of_tempostack_instance>.svc.cluster.local:8080/api/traces/v1/dev tls: insecure: false ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt" auth: authenticator: bearertokenauth headers: X-Scope-OrgID: "dev" service: extensions: [bearertokenauth] pipelines: traces: exporters: [otlp/dev]
8 # ...
Copy to Clipboard Copied! - 1
- 書き込み権限が設定されたサービスアカウント。
- 2
- サービスアカウントトークンを使用するためのベアラートークンエクステンション。
- 3
- サービスアカウントトークン。このトークンは、ベアラートークンヘッダーとして、クライアントによりトレーシングパイプラインサービスに送信されます。
- 4
- OTLP gRPC Exporter (
otlp/dev
) または OTLP HTTP Exporter (otlphttp/dev
) のいずれかを指定します。 - 5
- 有効なサービス CA ファイルを使用して TLS を有効にします。
- 6
- テナント名を含むヘッダー。
- 7
- OTLP gRPC Exporter (
otlp/dev
) または OTLP HTTP Exporter (otlphttp/dev
) のいずれかを指定します。 - 8
- CR の
exporters
セクションで指定したエクスポーター。
-
トレーシングパイプラインサービスに、