Webサイトを快適にご利用いただくためには、IE11以降、Chrome、Firefox、またはSafariをご使用ください。

IDおよびアクセス管理でクラウドネイティブのコンピューティングを保護

クラウドネイティブのコンピューティングとは、クラウドコンピューティング特有のメリットを活用したソフトウェアを作成および実行することを指します。サーバ上で実行するために構築された従来のソフトウェアとは異なり、ソフトウェア開発者は、クラウドベースのサービスで実行するためにクラウドネイティブのアプリを設計しています。クラウドネイティブのソリューションでは、中心構造が「分離された」設計になっているため、IDおよびアクセス管理(IAM)が重要な役割を果たしています。安全なクラウドネイティブのアプリケーションでは、Zero Trust手法に従い、ソリューションを構成するすべてのワークロードとコンポーネントの認証と承認を行う必要があります。

クラウドネイティブのコンピューティングとは

クラウドネイティブのコンピューティングの核となる考え方は、クラウドサービスで実行する意図を持ってアプリケーションを構築することです。従来のアプリケーション開発とは設計思想がこの点で異なります。つまり、開発者はクラウドベースのサービスで得られる利点を活用できるということです。例えば、クラウドネイティブの開発思想は、開発と運用(DevOps)、継続的インテグレーションと継続的デリバリ(CI/CD)、マイクロサービス、およびコンテナベースのアーキテクチャの概念を含んでいます。

クラウドネイティブのコンピューティングソリューションの見事な例は、Netflixです。このサービスでは、2億700万人の有料会員に複雑な機能セットを提供する際に、クラウドベースのテクノロジーによるホストを活用しています。Netflixは、急速に増加するユーザ集団にストリーミングサービスを提供するという特殊な要件のため、2008年にクラウド移行の戦略に乗り出しました。同社では、重大なデータベース破損を契機として、拡大を続ける登録者集団に対し高品質サービスの提供を続ける唯一の方法は、クラウドが提供する、信頼性が高くスケーラブルな分散型システムを活用することだと理解しました。同社は、Netflixをクラウドネイティブのアプリケーションに移行することで急速な進化を遂げ、新しい機能も追加できるようになりました。例えば、人工知能と機械学習アルゴリズムを使用して、おすすめや字幕翻訳で登録者のユーザエクスペリエンスをパーソナライズしました。

クラウドネイティブのアプリとは

クラウドネイティブのアプリとは、名前が示す通り、クラウドサービスのみで実行するよう構築されたアプリを意味します。この機能により、開発者は異なるアプリケーションのコンポーネントを関連するクラウドサービス上で実行する、分離型ソリューションを設計できるようになりました。例えばNetflixの例では、ユーザに接する機能は、クラウドプラットフォームのWebアプリケーションサービス上で実行します。同様に、ネットワークストリーミングはクラウドプラットフォームのネットワーキングソリューションを活用し、レコメンデーションエンジンは機械学習サービスを使用します。この設計は、すべてのロジックと機能を組織の所有するマネージド型インフラストラクチャで実行する、従来のアプリケーションとは異なります。クラウドネイティブのアプリでは、クラウドプラットフォームが管理してくれる可用性とスケーラビリティの高いサービス上で、さまざまなコンポーネントを実行できます。

クラウドネイティブのアーキテクチャとは

クラウドネイティブのアーキテクチャでは、テクノロジーソリューションの設計にクラウドファーストのモデルを使用します。設計者は、ソリューションの策定時に、アプリケーションで使用するさまざまなクラウドサービスを活用するため、モジュラー型の手法を取ります。クラウドネイティブのアーキテクチャと従来のソフトウェアアプリケーション設計を比較した場合、アプリケーションをホストするインフラストラクチャとサービスが異なります。

例えば、フロントエンド、ビジネス・ロジック・レイヤー、およびデータベースを備えた通常のWebアプリケーションがあるとします。従来のアーキテクチャでは、開発者がコードを記述し、それぞれのコンポーネントが個別のサーバまたはサーバセット上で動作するようにしていました。クラウドネイティブのアーキテクチャでは、設計者が各アプリケーションレイヤーをサービスのセットに分割します。例えば、フロントエンドはHTML、CSS、おびJavaScriptで作られたWebページで構成されています。このページは、何枚もの画像と、ユーザがアプリにログインできるようにする機能も含んでいます。ロジックレイヤーは、各プロセスの情報または外部サービス呼び出しのコンポーネントで構成されています。クラウドネイティブの手法では、設計者がソリューションを構築し、各機能パートを対応するクラウドサービスに合わせて調整します。一方で、従来のアーキテクチャでは、このコンポーネントすべてが、組織の管理する同一のインフラストラクチャ上に存在します。

以下の表は、同一タイプのアプリにおけるクラウドネイティブのアーキテクチャと従来のアーキテクチャの違いを示しています。

 

アーキテクチャのレイヤー

従来のアーキテクチャ

クラウドネイティブのアーキテクチャ

フロントエンド

Webフロントエンドのテクノロジー(HTML、CSS、JavaScript)および画像が同一のWebサーバ上にホストされる。

Webフロントエンドのコードがクラウドのマネージド型プラットフォームに展開される。例えば、HTML、CSS、およびJavascriptのコードがマネージド型Webアプリサービスに展開される。画像はコンテンツ配信ネットワークに展開される。

ビジネスロジックとインテグレーション

単一または複数のサーバが、ビジネスロジックを実行するコードをホストする。

インテグレーションコードは、外部サービスとデータの送受信を行う同一のサーバ上で実行される。

通常は、組織がオペレーティングシステムやハードウェアなどのインフラストラクチャを全面的に管理する。

ビジネスロジックの機能が、各オブジェクトの要件に対応するクラウドサービスに合わせて調整される。例えば、Javaコードがサーバレスの機能アプリで、Pythonコードがコンテナで動作する。

クラウドプロバイダが基盤となるインフラストラクチャを管理する。組織はコードとクラウドサービスの設定にのみ責任を負う。

データベース

ソリューションのデータベースとデータ関連のすべての機能が、単一または複数の専用サーバ上にホストされる。

組織がハードウェア、オペレーティングシステムおよびソフトウェアなどのインフラストラクチャを全面的に管理する。

ソリューションのデータコンポーネントが、対応するクラウド・データ・サービス上にホストされる。例えば、SQLサービスがリレーショナル・データベース・コンポーネントをホストし、レポート作成ではクラウドプロバイダのレポート作成プラットフォームを利用する。

クラウドプロバイダがハードウェア、オペレーティングシステムおよびソフトウェアなどのインフラストラクチャを全面的に管理する。組織はデータとクラウド・データ・サービスの設定にのみ責任を負う。

ビジネス上のメリット

クラウドネイティブのアプリを構築、展開、および管理することで、組織はクラウドが本質的なメリットを活用できます。例えば、クラウドサービスでは、利用するサービスのみに料金を支払うという柔軟性が得られます。このコンピューティングモデルでは、従来のオンプレミスのハードウェア上でアプリをホストするよりはるかにコスト効率が優れています。さらに、クラウドサービスでは柔軟なオンデマンド機能も提供しているため、ユーザの要求の増減に合わせてリソースをスケーリングできます。例えば、要求の増大に合わせてフロントエンドにコンピューティングリソースが必要になった場合、クラウドプラットフォームであれば、迅速かつ簡単にインフラストラクチャを追加できます。また、このプロセスを自動化して、要求が増加した時にリソースをスケールアップし、ピークを過ぎたら元に戻すということもできます。

クラウドサービスは、従量課金制と柔軟性に加え、自動化を推進して変更管理プロセスをシンプル化する機能も提供します。このメリットを合わせることで、組織は複雑なソリューションよりも良好な管理体制を実現し、より迅速に機能や拡張機能を提供することができます。例えば、クラウドネイティブのソリューションでは、一般的に分離されたモジュラー型アーキテクチャを使用しているため、機能の変更や追加を行う際、従来のアプリケーションよりもリスクを低減できます。また、構造もはるかにわかりやすくなっています。変更部分がアプリケーションの他の部分から分離されているため、新しいコードを迅速に適用できる他、コードを統合する箇所や機能のみを対象にテストできます。従来のアプリケーションは単一のソリューションとして設計されているため、コードをリファクタリングして、エンドツーエンドで再テストを行う必要があります。

クラウドネイティブのアプリでは、設計上モジュラー手法が使用されているため、柔軟性にも優れています。アプリをさまざまな異なるサービスに展開できるため、使用する技術が固定化されるリスクはありません。例えば、コードの一部をJava関数アプリに、ソリューションのその他の部分をPythonを実行するコンテナに展開できます。また、一部のワークロードを1つのプロバイダのプラットフォームで、その他のワークロードを別のクラウドで実行するというマルチクラウド手法を活用することもできます。制約から解放されたこの柔軟性により、組織は自由にイノベーションを目指し、新しい機能を素早く展開できます。特定のテクノロジーやプラットフォームに縛られないため、要件を満たしていればどのクラウドサービスでも利用できます。

クラウドネイティブのコンピューティングは安全ですか?

クラウドネイティブのコンピューティングは分離型を基本としているため、セキュリティにおいては包括的な統合型手法が必要となります。クラウドネイティブのソリューションを作成する設計者は、アーキテクャのすべてのコンポーネントとレイヤーのセキュリティ確保を考慮する必要があります。これらのコンポーネントには、ネットワーク、さまざまなコンテナ、マイクロサービス、アプリとデータをホストするデータベース、およびアプリ自体が含まれます。設計者が各コンポーネントとレイヤーのセキュリティを設定し、それぞれのソリューションモジュールを完全に保護した状態で個別に実行することが理想的です。クラウドネイティブのアプリの主要なメリットの1つは、必要に応じてさまざまなコンポーネントを異なるサービスに移動できるという柔軟性です。この柔軟性があるため、プラットフォームに付随する特定の要素のセキュリティを確保する必要があります。

さらに、クラウドネイティブのコンピューティングは、複雑な自動化機能を持つスタンドアロンサービス間の数千におよぶ接続を必要とするため、セキュリティアーキテクチャは通信ポイントを保護しなければなりません。移動中のデータとエンドポイントを保護する必要があるのです。アプリケーションが他のサードパーティのクラウドサービスからのデータも使用している場合は、さらに複雑になります。したがって、クラウドネイティブには、ソフトウェア開発を推進するモデルとなるいくつかの利点はありますが、セキュリティ確保においては別の手法が必要になります。従来のアーキテクチャのように境界部分のセキュリティを確保するのではなく、各コンポーネントのセキュリティを個別に確保することでソリューション全体を保護するという、分散型セキュリティモデルが必要です。

クラウドネイティブのコンピューティングにおけるIAMの役割

前述の通り、各コンポーネントがゆるやかに連動しながら独立して機能するため、アプリケーションとデータの機密性と完全性を確保することが必須になります。例えば、サービスとのすべて接続には、方向を問わず認証が必要です。さらに、認証されると、接続サービスまたはコンポーネントには、その動作に必要な関連機能にのみアクセスできるようにするための承認も必要になります。

クラウドネイティブのアプリケーションのモデル全体が分散型のため、認証および承認を管理するソリューションも独立させる必要があります。クラウドベースで独立型のIAMソリューションは、クラウドネイティブのアーキテクチャのセキュリティ管理に役立つ機能を提供します。クラウドネイティブのソリューションを構成するさまざまなコンポーネントにアクセスするユーザやデバイスなど、リソースのIDを一元管理できます。

DevOpsの視点では、クラウドベースで分散型のIAMソリューションも、クラウドネイティブのアプリのID、認証、および承認サービスの自動化に役立ちます。例えば、ユーザのプロビジョニングとプロビジョニング解除をサポートし、すべてのIDを管理する集中型コンソールを提供できます。また、IAMソリューションは、広範囲にわたるレポート作成機能により、クラウドネイティブのアーキテクチャのセキュリティに関するインサイトを提供し、より徹底した管理とプロアクティブなリスク低減が可能になります。

独立した分散型IAMプラットフォームは、クラウドネイティブのアプリをホストするために利用するクラウドインフラストラクチャへのアクセス管理にも役立ちます。例えば、AWS Control Towerを統合したOneLoginは、マルチロール、マルチアカウントのAWS環境を簡単に管理する機能を設計者に提供します。

これらの例は、クラウドネイティブのアプリを保護する際、IAMソリューションが欠かせない複数の事例があることを示しています。このソリューションは、さまざまなクラウドサービスにアクセスするIDの管理、IDプロバイダとしての自社ソリューションの統合、関連するレポート作成、またアプリのコンポーネントをホストするサービスへのアクセス管理を可能にするクラウドプラットフォームとの統合を支援します。