IBM Cloud および Kubernetes のセキュリティ概要
IBMがクラウドコンピューティング市場において、依然として少数派のプレイヤーである中で差別化を図る方法の一つは、柔軟性とカスタマイズ性に注力することです。
これはマーケティングの観点からは素晴らしいことです。しかし、セキュリティの観点から見ると、設定の選択肢が増えるほど課題も増えます。そのため、IBMのクラウドサービスを単独で利用する場合でも、より広範なマルチクラウドやハイブリッドクラウド戦略の一環として利用する場合でも、IBM Cloud環境のセキュリティを確保する方法を学ぶことが、IBMのクラウドサービスを効果的に活用するために不可欠です。
明確に申し上げますと、セキュリティ上の課題はIBMのプラットフォームに限らず、あらゆるクラウドプラットフォームにおける主要な考慮事項です。しかしながら、IBMがクラウドサービスと構成において柔軟性を重視する姿勢は、多様なクラウドアーキテクチャや設定に伴うセキュリティリスクの管理を特に難しいものとしています。
本記事では、IBM Cloud上で稼働するワークロードを保護する方法について解説いたします。具体的には、IBMの共有責任モデルへの取り組み、IBM Cloudにおける一般的なセキュリティ上の過ち、IBM Cloudを保護するためのベストプラクティス、そしてIBMの主要クラウドプラットフォームの一つであるIBM Cloud Kubernetes Serviceのセキュリティと監視方法についてご説明いたします。
IBMの共有責任モデル
他のパブリッククラウドプロバイダーと同様に、IBM Cloudでは責任分担モデルを採用しており、セキュリティおよびコンプライアンスに関する責任の所在を明確に定義しております。具体的には、IBM Cloudが管理する責任範囲と、お客様が担う責任範囲を区別しております。
IBMでは、セキュリティ責任の詳細な内訳を非常に詳細に提供しております。IBMの責任分担アーキテクチャに関する全詳細をご確認になりたい場合は、こちらをご参照ください。ただし、一般的な方針としては以下の通りとなります:
- お客様は、IBM Cloud上にデプロイまたは実行するすべてのアプリケーションおよびデータのセキュリティ確保に責任を負います。これには、IBM Cloud Kubernetes ServiceなどのマネージドIBMサービス経由でホストされるものも含まれます。
- IBMは、クラウドを支える物理ネットワークおよびサーバーのセキュリティ確保に責任を負います(ただし、後述の通り、IBM Cloud内にデプロイされたベアメタルサーバーのセキュリティ確保はお客様の責任となります)。
- 仮想サーバーや仮想ネットワークなど、ほとんどの仮想化リソースのセキュリティ確保については、IBMとお客様の間で責任が分担されます。お客様が制御しない仮想化コンポーネント(ハイパーバイザーなど)のセキュリティはIBMが担当し、お客様は仮想マシンにインストールするオペレーティングシステムなどのリソースのセキュリティを確保する必要があります。
IBM Cloudにおけるセキュリティ上の過ちを避けるために
繰り返しになりますが、非常に大まかに言えば、IBM Cloudにおける主なセキュリティ上の課題は、IBMがお客様にワークロードの設定やデプロイ方法として非常に多くの選択肢を提供しているため、セキュリティのベストプラクティスに従うことが難しい点にあります。多様な方法で設計・設定が可能なクラウド環境を扱う場合、従うべき単純なルールセットは存在しません。
したがって、IBM Cloudワークロードを設計・構成する際には、セキュリティの観点から避けるべきことを考えるのが最も合理的かもしれません。以下に、避けるべき一般的なIBM Cloudセキュリティ上のミスをいくつか挙げます。
ベアメタルサーバーのセキュリティ要件を見落とさないでください
IBM Cloudが競合クラウドよりも多くの選択肢を提供しようとする方法の一つは、幅広いベアメタルIaaSサーバーインスタンスを提供することです。ベアメタルクラウドサーバーは、お客様が他のユーザーと基盤となる物理マシンを共有する必要がないため、仮想サーバーよりも優れたパフォーマンスを提供することが一般的です。
しかしながら、セキュリティの観点からベアメタルサーバーで誤りを犯す可能性があるのは、IBMがサーバーのセキュリティを管理していると想定してしまう点です。確かに、IBM Cloudの物理インフラの大部分はIBMによって保護されていますが、ベアメタルサーバーインスタンスは例外となります。お客様がこれらのインスタンスを展開し、実行したいオペレーティングシステムやアプリケーションをプロビジョニングするため、ベアメタルサーバーのセキュリティ確保は主に顧客の責任となります。IBMは物理的なセキュリティを提供しますが、その他のほとんどのセキュリティ責任はお客様にあります。
マネージドサービスのセキュリティ対策をお忘れなく
IBM Cloudでは、CI/CDプラットフォームであるTektonのホスト型実装から、マネージドHadoop、各種Cloud Pak自動化および分析サービスに至るまで、数多くのマネージドクラウドサービスを提供しております。
ベアメタルサーバーインスタンスと同様に、IBM Cloudのマネージドサービスはセキュリティの観点から難しい可能性があります。お客様が、IBMが実際以上にセキュリティ責任を負っていると誤解される恐れがあるためです。IBMは、マネージドサービスを支える基盤インフラストラクチャ、ならびにサービスの一部として提供するSaaSアプリケーションやAPIのセキュリティを確保していますが、お客様がこれらのマネージドサービスを利用してデプロイするアプリケーションやデータのセキュリティは保証しておりません。
したがって、例えばIBM Analytics Engineに機密データをアップロードする場合や、IBM Cloud Kubernetes Service上のコンテナ内に自社アプリケーションを展開する場合、それらのデータやアプリケーションのセキュリティ確保はお客様の責任となります。IBMはお客様のデータを匿名化したり、コンテナイメージの脆弱性をスキャンしたりはいたしません。それはお客様の役割です。
IAMの設定を効果的に行わないと
他のクラウドと同様に、IBM Cloud上でホストされるワークロードのセキュリティは、それらを管理するアイデンティティおよびアクセス管理(IAM)ポリシーによって決まります。
IBM Cloudでは、クラウドコンソール、CLI、またはAPIを通じて権限管理を行うためのIAMフレームワークを提供しております。IBM Cloud環境で実行されるすべてのリソースに対して、最小権限の原則を適用するIAMルールを設定することが推奨されます。
例えば、以下のIBM Cloudアクセスポリシーでは、ユーザー「IBMid-3IAMISBEST1」に対し、以下の特徴を持つリソースへのアクセス権限を付与します:
- リソースグループ「default」に属するリソース
- ID が「abcd2e6fg1h74i44j5kl467m701n5289」である。
- 「Viewer」プラットフォームロールが割り当てられている。
{
"type": "access",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-3IAMISBEST1"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "7e522a19eb77477e88e96a600c44fb22"
},
{
"name": "resourceGroupId",
"value": "abcd2e6fg1h74i44j5kl467m701n5289"
}
]
}
]
}
Code language: JSON / JSON with Comments (json)
一般的に、このようなIAMロールは、他のクラウドで定義されるものと類似しています。ただし、IBM CloudのIAMは、他のクラウドプロバイダーのIAMフレームワークとは若干異なる点にご留意ください。例えば、AWS IAMのようにIAM内でユーザーを定義するのではなく、外部ツールを通じてユーザーを管理します。ワークロード向けのIAMポリシーを作成される前に、IBM CloudのIAMに関する独自のアプローチを理解するため、IBM CloudのIAMドキュメントを必ずお読みください。
IBMセキュリティの監視とアラートのみに依存しない
IBM Cloudはいくつかのネイティブセキュリティツールを提供しています。最も注目すべきはIBM Cloud Security Advisorであり、クラウド環境内でIBMが特定した潜在的なセキュリティ問題の概要を提供します。これらのインサイトは主にIBMが定義したセキュリティ監視設定に基づいていますが、カスタムルールを作成することも可能です。
Cloud Security AdvisorはIBM Cloudセキュリティ監視の有用な出発点ですが、完全なセキュリティ監視を単独で行うには通常不十分です。その理由は二つあります。一つは、IBM Cloudのみに対応している点です。他のクラウドやオンプレミス環境をIBM Cloud環境と統合していない場合、問題となります。二つ目は、複雑なKubernetes環境などに存在する可能性のある、高度に微妙な、あるいは特定の種類のセキュリティ脅威を、Cloud Security Advisorが常に検出できるとは限らない点です。
IBM Cloud Kubernetes Service のセキュリティ確保
IBM Cloud Kubernetes Service は、Amazon Elastic Kubernetes Service や Google Kubernetes Engine などと競合し得る主要なマネージド Kubernetes サービスとして台頭してまいりました。そのため、より広範な IBM Cloud セキュリティ戦略の一環として、特に IBM Cloud Kubernetes Service のセキュリティ確保について、いくつかご説明いたします。
IBM Cloud Kubernetes Serviceはマネージドサービスであるため、KubernetesクラスターをホストするサーバーのセキュリティはIBMが管理いたします。また、ネットワークトラフィックの保護も実施し、各顧客に専用の一顧客専用クラスターを提供することで、他顧客のワークロードに関連するセキュリティ問題が影響を及ぼすことはありません。
しかしながら、これ以外のセキュリティ責任の大部分はユーザー様に帰属します。具体的には以下の通りです:
- 更新とアップグレード:クラスターがデプロイされた後、Kubernetesの新バージョンがリリースされた際には、ユーザー様ご自身でクラスターを手動で更新する必要があります。(IBM Cloudは新バージョンが利用可能になった際に通知いたします。)
- コンテナイメージのセキュリティ:コンテナイメージスキャンを活用し、Kubernetesにデプロイするコンテナの脆弱性を必ず確認してください。
- Kubernetes API のセキュリティ:Kubernetes RBACなどのツールを活用し、Kubernetes API に関連するセキュリティ悪用のリスクを軽減する必要があります。
- セキュリティ脆弱性の軽減策:IBM は Kubernetes クラスターを構成するKubernetes ノードのセキュリティを確保しておりますが、お客様にはセキュリティ脆弱性が悪用されるリスクを軽減する措置を講じていただく必要があります。例えば、コンテナが特権モードで実行されないようにすることや、ネットワークレベルでのコンテナの分離などが挙げられます。
IBM Cloud Kubernetes Service 上で実行されるワークロードのセキュリティ確保は、ほとんどの点において、あらゆるタイプの Kubernetes 環境のセキュリティ確保と同様です。主な違いは、IBM が基盤となるサーバーおよびネットワークインフラストラクチャのセキュリティを確保する点です。その他のセキュリティ責任の大部分は、お客様が担うことになります。
IBM Cloudワークロードの監視と監査
IBM Cloudが提供する特別な機能、すなわち各種マネージドサービスやベアメタルサーバーインスタンスなどのリソースに関する特に幅広い選択肢を最大限に活用するためには、IBM Cloudにデプロイするワークロードのセキュリティ確保方法をご理解いただく必要があります。IBM Cloud Security Advisorなどのツールは出発点となりますが、ほとんどのユースケースではサードパーティ製ツールを用いた追加のセキュリティ監視および監査が必要となります。