CloudNative Days Tokyo 2023から、業務でのOSSコントリビューションのありかたとKeycloakについて解説したセッションを紹介

2024年2月28日(水)
高橋 正和
CloudNative Days Tokyo 2023から、OSSコントリビューションを企業の業務として成立させるために必要なことを解説したセッションを紹介します。

2023年12月11日、12日の両日にハイブリッド形式で開催されたCloudNative Days Tokyo 2023のキーノートから、日立製作所の中村雄一氏による、企業における業務でのOSSコントリビューションと、アイデンティティ管理ソフトウェアであるKeycloakのCNCFプロジェクト入りへの活動について語ったセッションを紹介する。

キーノートを担当した日立製作所の中村雄一氏

キーノートを担当した日立製作所の中村雄一氏

タイトルは「KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み」。自身がかつてOSS活動をリードしたときの反省と、そこからKeycloakプロジェクトに参加した経緯、そしてKeycloakプロジェクトにも自社ビジネスにも貢献するように活動した経験が語られた。

OSS活動が一見順調でもビジネスにつながらず続かなかった経験

中村氏は2001~2006年ごろに、会社の研究部門の若手として、Linuxカーネルのセキュリティ強化機能であるSELinuxに着目し、国内のコミュニティを立ち上げるなどの活動をしていた。仲間を作り、設定ツールを開発し、アップストリームにコントリビュートし、執筆や講演の声がかかるなど、一見順風満帆だった。

ただし、企業の研究者としてはビジネスにつながらず、研究費用がつかずに打ち切りになってしまったという。この経験から、業務でOSS活動をするには、所属組織のビジネスに結びつけて、社内での評価につなげなければ長続きしないことを学んだ。

SELinuxでの経験からの学び

SELinuxでの経験からの学び

業務起点でKeycloakに参加し機能強化、自社ビジネスにもつなげる

こうして業務でフルにOSS活動ができる機会を探していた中で出会ったのがKeycloakだった。

KeycloakはIDアクセス管理(Identity and Access Management:IAM)のOSSで、シングルサインオンのサーバーやAPIの認可認証サーバーとして動く。後述するように2023年4月にCNCFのIncubating Projectとなった、勢いのあるプロジェクトだ。

Keycloakとは

Keycloakとは

Keycloakを始めたのは、SELinuxでの教訓に学び、「Keycloakありき」ではないところがポイントだと中村氏は強調した。2017年ごろ、当時所属していた部署でAPI管理の新規ソリューションを検討する中で、OAuth 2.0に対応した認可サーバーが必要となったことが出発点だ。

その中でよさそうだったKeycloakに着目した。拡張性などの機能面に加えて、開発コミュニティが活発だったことがその理由である。一方でKeycloakには、日立の顧客であるミッションクリティカル分野に向けた高度なセキュリティ機能が不足していたが、これを逆にコントリビューションのチャンスであると考えたという。

「Keycloakありき」でないところがポイント

「Keycloakありき」でないところがポイント

具体的なコントリビューションのテーマは、「OAuthを安全に使うためのFAPI(Financial-grade API)」という仕様だ。

まずはFAPI関連で最初に求められそうな、認可コード横取りを防止する機能であるRFC7636の仕様を実装して、2017年2月にGitHubへプルリクエストを提出した。

開発を始めたときには既存実装はないことを確認していた。しかし、プルリクエストを出すまで慎重に進めていたところ、提出したときには同じ機能のプルリクエストが出ていた。ただし、中村氏たちのプルリクエストのほうがカバーする範囲も広いため、先方と会話してこちらに一本化し、4月にマージされた。

FAPIをコントリビューションのテーマに

FAPIをコントリビューションのテーマに

その後、FAPI関連の機能や、Keycloakを実案件に使ったときに出たフィードバックなどをコントリビュートしていき、常連化していき他のメンテナーたちの反応もよくなっていった。また、WebAuthnのJavaライブラリ「WebAuthn4J」の作者の能島氏と協力して、KeycloakでのWebAuthnサポートを開発し、Keycloakにマージされた。

さらに、国境を越えた開発としてKeycloakのFAPI-SIGを立ち上げた。Web会議で開発項目の分担や進捗を共有するもので、およそ8か国11社が開発した。その結果、FAPIの主要な機能を全部サポートした。

社外との共同開発

社外との共同開発

FAPI-SIGを立ち上げ

FAPI-SIGを立ち上げ

自社のビジネスにおいても、Keycloakの商用版であるRed Hat SSOとNginxを組み合わせて、APIをセキュアに公開するサービスを立ち上げた。そこで出てきたフィードバックをKeycloakに反映していくとともに、エンジニアは技術的な知見を深めることができた。そしてビジネス面でも、そうしたOSS活動により顧客から評価を得て利用が増え、それがまたKeycloakへの貢献につながるという、好循環が得られた。

Keycloakを使ったビジネスを立ち上げ

Keycloakを使ったビジネスを立ち上げ

OSS活動とビジネスの好循環

OSS活動とビジネスの好循環

KeycloakのCNCFプロジェクト入りの活動

続いて、こうして盛り上げたKeycloakをIncubating Project入りさせた話だ。

Keycloakプロジェクトでは2018年ごろからCNCFプロジェクト入りの活動を始めだ。CNCFのプロジェクトには3段階あり、「Sandbox」が最もハードルが低いが、Keycloakは実績もあるのでその上の「Incubating」に挑戦していた。

2020年にはRed Hat社の人がIncubatingの提案を提出したが、1年以上動きがなかった。進まない理由としては、クラウドネイティブでない点、そしてメンテナーもRed Hatのエンジニアのみだったことがあった。

そこで、まずクラウドネイティブなJavaのフレームワークであるQuarkusをベースに改造。また日立を含む3社からメンテナーを就任させた。さらに、つまずくプロジェクトが多いという利用実績についても、日立を含むさまざまな実績をプッシュした。

CNCFプロジェクト入りのための対応

CNCFプロジェクト入りのための対応

こうした活動の結果、2021年にTOC(Technical Oversight Committee)のRicardo Rocha氏がスポンサーになってくれて、DD(デューデリジェンス)の過程に進んだ。これはTOCと協力して、利用実績やガバナンス、開発状況などのレポートを提出するものだ。

そしてTOCの投票が2月ごろに行われ、3月に通り、「KubeCon EU 2023」で承認されてアナウンスされた。

Incubating Projectとして承認

Incubating Projectとして承認

過去の経験から、OSSコントリビューションを自社ビジネスと両立させることを目指して、業務起点でOSSプロジェクトを選んで両者とも成功させた話が語られた。

特に必要性があり、開発が活発で、なおかつコントリビューションの余地があるプロジェクトを選んだこと。そして、そのプロジェクトに対して戦略的に取り組んで、OSSと自社ビジネスの好循環を作ったところが成功の要因といえる。

さらにそうした活動がKeycloakのCNCFプロジェクト入りにもつながったということで、開発コミュニティの勢いを感じさせるセッションだった。

フリーランスのライター&編集者。IT系の書籍編集、雑誌編集、Web媒体記者などを経てフリーに。現在、「クラウドWatch」などのWeb媒体や雑誌などに幅広く執筆している。なお、同姓同名の方も多いのでご注意。

連載バックナンバー

クラウドイベント
第10回

CloudNative Days Tokyo 2023から、Yahoo! JAPANを支えるKaaS運用の安定化やトイル削減の取り組みを紹介

2024/3/11
CloudNative Days Tokyo 2023のセッションから、LINEヤフーの社内KaaSであるZCPを安定運用さるための施策を同社のSREが解説したものを紹介する。
セキュリティイベント
第9回

CloudNative Days Tokyo 2023から、業務でのOSSコントリビューションのありかたとKeycloakについて解説したセッションを紹介

2024/2/28
CloudNative Days Tokyo 2023から、OSSコントリビューションを企業の業務として成立させるために必要なことを解説したセッションを紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています