Knative Backstage セキュリティ ¶
公開日: 2024年9月23日
Knative Backstage セキュリティ¶
著者: Ali Ok、プリンシパルソフトウェアエンジニア @ Red Hat
新着情報¶
以前のブログ記事では、Knative と Backstage を統合する方法について説明しました。このブログ記事では、Knative Event Mesh プラグインとバックエンド間の通信を保護する方法について説明します。
以前は、バックエンドは Kubernetes クラスターへのフルアクセス権を持つサービスアカウントで実行されていました。これは、バックエンドがクラスター内のすべてのリソースにアクセスできるため、安全ではありませんでした。また、バックエンドには認証メカニズムがなかったため、バックエンドにアクセスできるユーザーは誰でも Kubernetes リソースにアクセスできました(読み取り専用でしたが)。
これらの問題を解決するために、2つのことを行いました
- バックエンドは、制限付き権限を持つサービスアカウントを使用するようになりました。
- バックエンドは、プラグインからの各リクエストに対して、認証するためのトークン(APIサーバーに渡す)を必要とするようになりました。
仕組み¶
Backstage セキュリティ
他の Backstage プラグインと同様に、プラグイン管理者がバックエンド URL やトークンなどの必要なものを設定してプラグインを構成できるようにしたいと考えました。これは、ユーザーが URL とトークンを提供する必要があるBackstage Kubernetes プラグインと同様のアプローチです。
トークンは Backstage 構成に保存され、各リクエストとともにバックエンドに渡されます。バックエンドはこのトークンを使用して Kubernetes API サーバーに認証します。トークンは、クラスター内の Knative Eventing リソースを一覧表示するために必要な権限を持つサービスアカウントトークンです。
...
catalog:
providers:
knativeEventMesh:
dev:
token: '${KNATIVE_EVENT_MESH_TOKEN}'
baseUrl: "http://eventmesh-backend.knative-eventing.svc:8080"
schedule: # optional; same options as in TaskScheduleDefinition
# supports cron, ISO duration, "human duration" as used in code
frequency: { minutes: 1 }
# supports ISO duration, "human duration" as used in code
timeout: { minutes: 1 }
token
は KNATIVE_EVENT_MESH_TOKEN
環境変数から取得されます。Backstage は構成ファイルで環境変数をサポートしているため、Backstage インスタンスを起動する前にトークンを環境変数として設定できます。実際、Backstage には構成ファイル、ファイルインクルードなどを含む他のメカニズムがあります。詳細については、Backstage ドキュメントを確認してください。
ServiceAccount
、ClusterRole
、ClusterRoleBinding
、Secret
、およびその Secret
のトークンを作成する方法は、プラグインの readme ファイルに記載されています。
デモとクイックスタート¶
プラグインの動作を確認するには、Kubernetes クラスターにバックエンドをインストールし、Backstage インスタンスにプラグインをインストールします。
ただし、プラグインをすばやく確認するには、デモビデオをご覧ください。デモビデオは、Ali Ok のデモリポジトリで利用可能なクイックスタートを使用して録画されています。
コントリビューションを歓迎します¶
プラグインとバックエンドの改善にご協力いただけるコントリビューターを募集しています。コントリビュートに興味がある場合は、プラグインリポジトリのREADMEファイルを確認してください。バックエンドの起動方法、プラグインのインストール方法、プラグインの変更方法はすべてそこに記載されています。
good first issue としてマークされている問題がいくつかあり、それらについてお手伝いを求めています。コントリビュートに興味がある場合は、good first issueを確認してください。
連絡先¶
ご質問やご意見がございましたら、お気軽にお問い合わせください。CNCF Slack の#knative チャンネルで私たちを見つけることができます。