
こんにちは。ACS事業部 亀崎です。 今回は私たちが提供しているサービス「PlaTT」のManagedな仕組みのご紹介です。
PlaTT とは
まず初めにPlaTTそのもののご紹介です。
PlaTTはOSSの開発者ポータルBackstageをManaged Serviceとして提供するものです。

これまでBackstageについて様々な記事を投稿してまいりました。また、「ちょこっとBackstage」というものも以前公開させていただきました。 開発者ポータルとして様々なことができる可能性のあるBackstageですが、その立ち上げやBackstageそのもののメンテナンス、機能拡張はとても難しい、複雑なものです。
こうした作業は、自身が提供するシステムの開発をミッションとする開発チームにとってはノンコアなタスクにあたると思います。
ではプラットフォームチームが行うものか。確かに開発チームの認知負荷を下げ生産性を高めるためのものを提供するという意味においては開発者ポータルはプラットフォームチームが提供、メンテナンスするものだろうと思います。しかし、プラットフォームチームが開発者ポータルBackstageの中身を理解して更新を行っていくべきかというと100%同意はできません。プラットフォームチームが提供するものは他にも多数あるはずです。できれば1つ1つの提供物にかかる手間は少しでも低減しつつ、効果のあるものを多く提供するのがよいのではないかと考えます。
そこで私たちはこの開発者ポータルBackstageをManaged Serviceとして提供することにしました。 Managed Serviceとすることで、プラットフォームチームがBackstageそのものの作成やその後のアップデートの作業をすることなく、本来注力すべきテンプレート作成や各種機能の提供に集中していただこうとするものです。
Managed Serviceの仕組み
ではどのような仕組みでManagedにしているのか。それをここでご紹介します。
ポイント1:提供環境
まず提供先の環境です。Managed Serviceと聞くと昨今ではプロバイダー所有のWebサービスを利用する「SaaS」形態を思い浮かべる方も多いのではないでしょうか。PlaTTはいわゆるSaaSとは異なる形態を採用しています。
PlaTTはAzureを実行環境としており、お客様自身のAzureテナント上にBackstageを実行するのに必要な各種Azureリソースを作成し、その環境で弊社が作成したBackstageコンテナイメージを実行しています。
開発者ポータルは、お客様の各開発チームの利用するクラウドリソースを作成・変更するものになります。このためどうしてもクラウド環境に対する特権ユーザーである必要があります。SaaS方式にした場合、そうした特権をサービスプロバイダー側に与えることになるため、導入をためらってしまうのではないか、と弊社では考えました。
このため、お客様自身のAzureテナント上に開発者ポータルそのものを導入する方式を採用しました。

ポイント2:管理方法
お客様テナント上に導入したPlaTTをどのように弊社が管理していくかがポイントになります。 もちろん管理するためにはお客様テナントに対する何等かのアクセス権を弊社に付与していただく必要があります。この部分についてAzureのLighthouseという機能を利用しています。
まず導入に先立って、お客様にはAzureのサブスクリプションを用意していただきます(弊社CSPサブスクリプションのご利用を推奨しています)。 このサブスクリプションに対して、弊社のAzureユーザー/グループに対して管理の委任を行っていただきます。この委任はAzureテナントへの外部ユーザー招待に似た仕組みです。
委任していただいたあと弊社ユーザーがお客様テナントの指定されたサブスクリプションにアクセスできるようになります。委任されたサブスクリプション以外にはアクセスできません。

さて、こうした動作は外部ユーザー招待でも実現できるものですが、その違いはどういったところにあるのかという疑問もあると思います。
外部ユーザー招待とLighthouseの違いは次のようなものになります。
1 付与できるロールの制限
外部ユーザーの場合、基本的にどんなAzureのロールも付与できます。付与できる権限にはAdministrator権限も含みます。もちろん皆様の環境では注意深くロールアサインを実施されており、必要以上の権限を外部ユーザーに付与することはないとは思いますが、万が一なにかミスがあった場合などを考えるとリスクが残ります。
これに対してLighthouseでは付与できるロールが制限されています。簡単に言うと、付与できる最大のロールはContributor権限までで、Administrator権限は付与できません。Lighthouseという仕組み上付与できる権限そのものの制約があるため、誤った設定をした場合にAdministrator権限が付与されているといったリスクは回避できる仕組みとなっています。
2 データ領域アクセスの制限
外部ユーザー招待の場合、権限割当次第でどんなAzureリソースにもアクセスできるようになります。お客様のデータそのものにもアクセスできることになります。ロール同様、この点についても注意深く設定されていることとは思いますが、Azureリソースの管理は許可するがデータアクセスはできないようにするといった設定は面倒で、必要以上にアクセスできてしまうというリスクがあると思います。
これに対してLighthouseではロール同様、データアクセスが制限されています。例えばLighthouseでは、Managed IDで動作する導入アプリケーションを除き、データ領域には一切アクセスできません。例えばLighthouseユーザーがBlob Storage上のデータを覗き見るといったことはその仕組み上できないようになっています。またさきほど除外されていたManaged IDで動作するアプリケーションについても、サブスクリプションの管理を委任する際に「このアクセス権限は付与してもOKだよ」という指定をする必要があります。ホワイトリスト形式による付与なので過剰な権限付与とはなりにくいものとなっています。
ただし、1つだけアクセスできるデータ領域があります。それがAzure Monitorのデータです。この部分に関してはAzureリソースの管理に必要な情報でもあるため、Lighthouseからもアクセスできるようになっています。
こうした制限があることで安心してお客様にサブスクリプションを委任していただくことができるようになっていると考えています。
まとめ
このように、お客様にとって難解さ・複雑さのある開発者ポータルBackstageを、より簡単に・安心してご利用いただくため、PlaTTというサービスを提供させていただいております。
昨今、Platform Engineeringや開発者生産性というテーマがとても注目されています。そうした中できっと開発者ポータルやBackstageというキーワードも目にすることがあると思います。その際にぜひPlaTTというサービスがあるということを認知していただければと思います。
またPlatform Engineering、開発者ポータルなど、流行っているようだけど具体的に何から進めればいいんだろうなど、ありましたらぜひ弊社にご相談ください。