APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

BackstageのAPI認証・認可を簡単にするPluginを公開しました

2023年12月15日、Backstageの環境構築を少しだけ楽にするPluginを公開しました。

www.npmjs.com www.npmjs.com

Backstageとは

まず最初にBackstageとはなにかを簡単にご紹介します。
BackstageはCNCFのプロジェクトの1つで、拡張性の高い開発者ポータルのOSSです。機能拡張などはPluginを追加導入することで実現します。
具体的な機能などは、これまでにも何回か本ブログでも紹介しているので、そちらをご一読いただくのがよいかと思います。

techblog.ap-com.co.jp techblog.ap-com.co.jp techblog.ap-com.co.jp

Plugin作成に至った経緯

課題

まずBackstageのAPIアクセスについて説明します。BackstageのAPIはデフォルトではユーザー認証・認可を行いません。誰もがアクセスできるようになっています。ユーザー認証・認可は原則、Pluginを導入する際にPlugin利用者が付与することになっています。ユーザー認証にはPluginを追加し利用して、GitHubなどの外部サービスを利用することができるようになっています。

このあたりまでは 以前公開した 「ちょこっとBackstage」をご利用・ご参照いただくと、実際にどのように行うのかがわかります。

github.com

Backstageのドキュメントを見ながらサービスを立ち上げると(「ちょこっとBackstage」も同様です)GitHubを使ったユーザー認証を行い、Webブラウザからフロントエンドアプリケーションを利用する際のユーザー認証・認可を行っています。

ところが実はAPIレベルではこの認証・認可は行われていません。通常の利用シーンではフロントエンドアプリケーションでサインインを求められるので問題ないように見えますが、万が一アクセスするAPIのURLなどが部外者に知られてしまった場合、その部外者は認証・認可のないまま情報を取得することができてしまいます。具体的な例としてはTechDocsです。デフォルトでは、URLがわかればTechDocsは誰でも閲覧できる状態になっています。フロントエンドで一定のガードはできていますがやはり不安です。

解決策

個別のAPIで認証・認可を行う方法はあります。
しかし、それがどのレベルまで影響があるのかといったことまでは記載されておらず、また解決策もBackstageのドキュメントの奥底に隠れていてなかなか気づきません。今回あらためて記載されている部分を探したのですが、みつけるのにかなり苦労しました(そして、普通これは気づけないだろうとも感じました)。

見つけた解決策はこちらです。

github.com

こちらからコードをコピーして自身のBackstageに組み入れれば対応は完了します。

Plugin作成

しかしそもそもこのドキュメント見つけて、コピーして、ってやること自体も面倒なんじゃないかなと思い、今回はその解決策を掘り起こし、そこに記載されているコードをPluginとして実装しました。 わざわざコードをコピーするといったことをできる限り省くこどで、ほんの少しだけれども皆様を楽にしようと思い、Pluginを公開しました。

このPluginを利用することで、Backstageのコード修正量はかなり減ると思います(かつ簡単になっていると思っています)。

ぜひご利用いただければ幸いです。

2024年4月9日追記

techblog.ap-com.co.jp

ACS事業部のご紹介

私たちACS事業部はAzure・AKSなどのクラウドネイティブ技術を活用のご支援をしております。 Platform Engineering/Backstage導入支援もこうした支援の一部と考えております。ぜひお声がけください。

www.ap-com.co.jp