(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023114556
(43)【公開日】2023-08-18
(54)【発明の名称】候補権限決定装置、最小権限特定システム、情報処理システム、および、候補権限決定方法
(51)【国際特許分類】
G06F 21/12 20130101AFI20230810BHJP
G06F 21/62 20130101ALI20230810BHJP
【FI】
G06F21/12 310
G06F21/62 318
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022016931
(22)【出願日】2022-02-07
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】田中 佑奈
(72)【発明者】
【氏名】清水 遼
(72)【発明者】
【氏名】鹿糠 秀行
(57)【要約】
【課題】
プログラムに付与すべき最小権限の候補を自動発見する装置において、候補権限を機能単位で過不足なく自動的に導出可能とすることを目的とする。
【解決手段】
候補権限決定装置は、プロセッサを備えている。前記のプロセッサは、入力される対象プログラムにおいて最小権限の操作対象となる機能の全権限である候補権限を決定する。ここで、前記のプロセッサは、この候補権限の決定にあたって、下記の情報を用いる。すなわち、前記のプロセッサは、候補権限の決定にあたって、既存の複数のプログラムから抽出されるシステム環境の構築に関わらないにもかかわらずプログラムが行使する権限の操作対象である機能の情報に基づいて、機能の最小権限の操作対象へのなり易さが算出された結果を含む情報を用いる。
【選択図】
図2
【特許請求の範囲】
【請求項1】
プロセッサを備え、
前記プロセッサは、
既存の複数のプログラムから抽出されるシステム環境の構築に関わらないにもかかわらずプログラムが行使する権限の操作対象である機能の情報に基づいて、プログラムが行使する機能の最小権限の操作対象へのなり易さが算出された結果を含む情報を用いて、入力される対象プログラムにおいて最小権限の操作対象となる機能の全権限である候補権限を決定する、
ことを特徴とする候補権限決定装置。
【請求項2】
請求項1に記載の候補権限決定装置であって、
前記の機能の最小権限の操作対象へのなり易さが算出された結果を含む情報は、
前記の既存の複数のプログラムにおける、権限の操作対象である機能が出現する割合と、権限の操作対象であってシステム環境の構築に関わらない機能が出現する割合と、を用いて算出される数値を含む、
ことを特徴とする候補権限決定装置。
【請求項3】
請求項1に記載の候補権限決定装置であって、
前記プロセッサは、
対象プログラムのうちで権限が付与されている機能、対象プログラムのうちでシステム環境を構築する機能、および、前記の機能の最小権限の操作対象へのなり易さが算出された結果を含む情報において、これらの和集合に該当する機能の権限に基づき候補権限を決定する、
ことを特徴とする候補権限決定装置。
【請求項4】
請求項1に記載の候補権限決定装置であって、
前記プロセッサは、
既存の複数のプログラムから求められ、権限が付与される機能に対する操作対象になり易い機能の順位に関する情報に基づいて、対象プログラムにおいて付与する権限を増加させ、
権限を増加させた対象プログラムを実行することで、候補権限を決定する、
ことを特徴とする候補権限決定装置。
【請求項5】
請求項1に記載の候補権限決定装置であって、
前記プロセッサは、
暫定的な候補権限に基づく権限が付与された対象プログラムから権限を削除し、
権限を削除した対象プログラムの実行結果に基づいて、候補権限を決定する、
ことを特徴とする候補権限決定装置。
【請求項6】
請求項5に記載の候補権限決定装置であって、
前記プロセッサは、
対象プログラムの実行に失敗し、かつ、削除した権限が1つである場合において、
削除した権限を含む候補権限を決定する、
ことを特徴とする候補権限決定装置。
【請求項7】
請求項5に記載の候補権限決定装置であって、
前記プロセッサは、
対象プログラムの実行に失敗し、かつ、削除した権限が複数ある場合において、
削除した権限が追加された対象プログラムから、ある1つの権限を削除して対象プログラムを実行し、
対象プログラムの実行に失敗した場合に、前記権限を含めた候補権限を決定する、
ことを特徴とする候補権限決定装置。
【請求項8】
請求項1に記載の候補権限決定装置と、
前記候補権限決定装置が決定した候補権限に基づく対象プログラムの実行結果を利用して、対象プログラムの最小権限を特定する装置と、を備える、
ことを特徴とする最小権限特定システム。
【請求項9】
入力される対象プログラムの最小権限を特定する最小権限特定装置と、
前記最小権限特定装置が特定した最小権限に基づく対象プログラムがアップロードされるクラウドシステムと、
を備え、
前記最小権限特定装置は、
プロセッサを備え、
前記プロセッサは、
既存の複数のプログラムから抽出されるシステム環境の構築に関わらないにもかかわらずプログラムが行使する権限の操作対象である機能の情報に基づいて、プログラムが行使する機能の最小権限の操作対象へのなり易さが算出された結果を含む情報を用いて、入力される対象プログラムにおいて最小権限の操作対象となる機能の全権限である候補権限を決定し、
決定した候補権限に基づく権限を付与した対象プログラムの実行結果を利用して、対象プログラムの最小権限を特定する、
ことを特徴とする情報処理システム。
【請求項10】
請求項9に記載の情報処理システムであって、
前記の機能の最小権限の操作対象へのなり易さが算出された結果を含む情報は、
前記の既存の複数のプログラムにおける、権限の操作対象である機能が出現する割合と、権限の操作対象であってシステム環境の構築に関わらない機能が出現する割合と、を用いて算出される数値を含む、
ことを特徴とする情報処理システム。
【請求項11】
請求項9に記載の情報処理システムであって、
前記プロセッサは、
対象プログラムのうちで権限が付与されている機能、対象プログラムのうちでシステム環境を構築する機能、および、前記の機能の最小権限の操作対象へのなり易さが算出された結果を含む情報において、これらの和集合に該当する機能の権限に基づき候補権限を決定する、
ことを特徴とする情報処理システム。
【請求項12】
請求項9に記載の情報処理システムであって、
前記プロセッサは、
既存の複数のプログラムから求められ、権限が付与される機能に対する操作対象になり易い機能の順位に関する情報に基づいて、対象プログラムにおいて付与する権限を増加させ、
権限を増加させた対象プログラムを実行することで、候補権限を決定する、
ことを特徴とする情報処理システム。
【請求項13】
請求項9に記載の情報処理システムであって、
前記プロセッサは、
暫定的な候補権限に基づく権限が付与された対象プログラムから権限を削除し、
権限を削除した対象プログラムの実行結果に基づいて、候補権限を決定する、
ことを特徴とする情報処理システム。
【請求項14】
請求項13に記載の情報処理システムであって、
前記プロセッサは、
対象プログラムの実行に失敗した場合において、
削除した権限を含む候補権限を決定する、
ことを特徴とする情報処理システム。
【請求項15】
プロセッサを用いて行う候補権限決定方法であって、
既存の複数のプログラムから、システム環境の構築に関わらないにもかかわらずプログラムが行使する権限の操作対象である機能の情報を抽出し、
抽出した前記情報に含まれる機能の最小権限の操作対象へのなり易さを算出し、
算出した結果を用いて、入力される対象プログラムにおいて最小権限の操作対象となる機能の全権限である候補権限を決定する、
ことを特徴とする候補権限決定方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、候補権限決定装置、最小権限特定システム、情報処理システム、および、候補権限決定方法に関する。
【背景技術】
【0002】
ソフトウェア開発において、プログラムの実行上必要十分な権限である最小権限もしくは最小権限に準ずる適切な権限の設定は、近年注目されるゼロトラストを含むセキュリティの観点で極めて重要視されている。しかし、開発対象のソフトウェアが複雑化している現在、人手による適切な権限設計は多大な工数を要する。
【0003】
そこで、このようなプログラムに対する適切な権限を自動的に導出する技術が開発されている。例えば、特許文献1には、実行するプログラムを逆アセンブルし内部的に呼び出している関数を解析することで適切な権限を導出する技術が開示されている。また、特許文献2には、プロセス親子関係の遷移履歴と各プロセスのアクセスログに基づいて適切な権限を導出する技術が開示されている。
【0004】
しかし以上の2つの文献の技術は、昨今利用が活発となっているクラウドサービスが提供するブラックボックスな機能を用いるプログラムの権限設定には適用できない。なぜなら、ブラックボックスなシステムからはバイナリファイルやログを取得することができないからである。
【0005】
特許文献3では、ブラックボックスな機能を用いるプログラムの最小権限設定を自動化する技術が開示されている。特許文献3の技術では、プログラムに十分な権限が付与されなければプログラム実行が失敗する点に着目している。まず、最小権限の候補となる権限の集合(候補権限)を導出する。続いて、候補権限の一部の権限をプログラムに付与しプログラムを実行する。そのプログラムの実行が成功したか否かの結果に基づき、プログラムに付与する権限を変更する。これを繰り返すことで最終的に最小権限が付与されたプログラムを導出する。
【0006】
特許文献3の候補権限導出方法は次の通りである。まず、対象プログラムとは別に過去に最小権限を導出したプログラム(過去プログラム)を用意する。次に、対象プログラムと類似度の高い過去プログラムのうち、どのプログラムの最小権限を対象プログラムの候補権限の候補として採用するかユーザーが選択する。ユーザーが選択した権限をプログラムに付与してプログラムを実行し、実行に失敗した場合、現在プログラムに付与している権限を権限分類単位で増加させてプログラムを実行することを繰り返す。プログラムの実行に成功した時点でプログラムに付与されている権限を候補権限とする。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2012-048609号公報
【特許文献2】特開2005-128623号公報
【特許文献3】特開2021-060702号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、特許技術3の候補権限導出方法では、ユーザーが選択した過去プログラムの最小権限の操作対象となる機能(ここでの機能は、他プログラムやAPI(Application Programming Interface)により提供される)が、対象プログラムの最小権限の操作対象となる機能を網羅していない場合、候補権限を抽出することができず、結果全ての機能を操作対象とする全権限を候補権限としなくてはならなくなる。
【0009】
例えば、対象プログラムの最小権限の操作対象となる機能がストレージ機能とロギング機能であり、ユーザーが選択した過去プログラムの最小権限の操作対象となる機能がストレージ機能のみである場合を考える。この場合、過去プログラムの最小権限を対象プログラムに付与してプログラム実行が失敗した際に、現在プログラムに付与しているストレージ機能の権限をWriteやReadなどの権限分類単位で増加させてプログラムを実行しても実行が成功することはない。結果、ストレージ機能を操作対象とする全権限を付与してプログラムを実行しても実行に失敗し、ロギング機能を操作対象とする権限に辿りつけず、候補権限を抽出できない。
【0010】
候補権限の個数は最小権限導出に必要なプログラム実行回数に直結する。特許技術3の候補権限導出方法で候補権限が絞れず全権限となるとプログラム実行回数が増大して実行時間が増加する。さらにクラウドサービスが提供する機能を用いるプログラムでは、従量課金制により金銭的なコストも増大する。
【0011】
本発明はこのような背景に鑑みてなされたものであり、その目的は、プログラムに付与すべき最小権限の候補を自動発見する装置において、候補権限を機能単位で過不足なく自動的に導出可能とすることにある。
【課題を解決するための手段】
【0012】
本発明の第1の態様によれば、下記の候補権限決定装置が提供される。すなわち、候補権限決定装置は、プロセッサを備える。プロセッサは、既存の複数のプログラムから抽出されるシステム環境の構築に関わらないにもかかわらずプログラムが行使する権限の操作対象である機能の情報に基づいて、プログラムが行使する機能の最小権限の操作対象へのなり易さが算出された結果を含む情報を用いて、入力される対象プログラムにおいて最小権限の操作対象となる機能の全権限である候補権限を決定する。
【0013】
本発明の第2の態様によれば、下記の最小権限特定システムが提供される。すなわち、最小権限特定システムは、前記候補権限決定装置と、候補権限決定装置が決定した候補権限に基づく対象プログラムの実行結果を利用して、対象プログラムの最小権限を特定する装置と、を備える。
【0014】
本発明の第3の態様によれば、下記の情報処理システムが提供される。すなわち、情報処理システムは、最小権限特定装置と、クラウドシステムと、を備える。最小権限特定装置は、入力される対象プログラムの最小権限を特定する。クラウドシステムは、最小権限特定装置が特定した最小権限に基づく対象プログラムがアップロードされる。また、最小権限特定装置は、プロセッサを備える。プロセッサは、既存の複数のプログラムから抽出されるシステム環境の構築に関わらないにもかかわらずプログラムが行使する権限の操作対象である機能の情報に基づいて、機能の最小権限の操作対象へのなり易さが算出された結果を含む情報を用いて、入力される対象プログラムにおいて最小権限の操作対象となる機能の全権限である候補権限を決定する。プロセッサは、決定した候補権限に基づく権限を付与した対象プログラムの実行結果を利用して、対象プログラムの最小権限を特定する。
【0015】
本発明の第4の態様によれば、下記の候補権限決定方法が提供される。候補権限決定方法は、プロセッサを用いて行う方法である。候補権限決定方法は、既存の複数のプログラムから、システム環境の構築に関わらないにもかかわらず権限の操作対象である機能の情報を抽出し、抽出した情報に含まれる機能の最小権限の操作対象へのなり易さを算出し、算出した結果を用いて、入力される対象プログラムにおいて最小権限の操作対象となる機能の全権限である候補権限を決定する。
【発明の効果】
【0016】
本発明によれば、プログラムに付与すべき最小権限の候補を自動発見する装置において、候補権限を機能単位で過不足なく自動的に導出可能となる。なお、上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0017】
【
図1】本実施形態に係るクラウド実行システムの構成の一例を示す図である。
【
図2】最小権限特定装置が備える機能の一例を説明する図である。
【
図3】システム環境および現行権限情報の一例を示す図である。
【
図4】他プログラムシステム環境および権限情報の一例を示す図である。
【
図5】暗黙使用サービス該当指数導出処理の一例を示す図である。
【
図6】暗黙使用サービス該当指数情報の一例を示す図である。
【
図7】操作対象サービスランキング導出処理の一例を示す図である。
【
図8】操作対象サービスランキング情報の一例を示す図である。
【
図9】システム環境特徴解析処理の一例を示す図である。
【
図10】プログラム使用サービス情報の一例を示す図である。
【
図11】システム環境特徴解析情報の一例を示す図である。
【
図13】候補権限決定処理の実行中に最小権限特定装置が表示する進捗情報画面の一例を示す図である。
【発明を実施するための形態】
【0018】
本実施形態では、クラウド上に構築するアプリコードとシステム環境および現行権限情報を含む対象プログラムを入力として最小権限を含む権限の集合(候補権限)を決定し、対象プログラムの最小権限を特定する最小権限特定装置を備えるシステムについて説明する。
【0019】
<システム構成>
先ず、
図1を参照しながら、本実施形態に係るクラウド実行システム1(情報処理システム)の構成の一例を示す。クラウド実行システム1は、対象プログラムを入力するユーザが使用する最小権限特定装置10と、クラウドシステム20とを含んで構成される。最小権限特定装置10及びクラウドシステム20の間は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等の有線又は無線の通信ネットワーク5によって通信可能に接続される。
【0020】
クラウドシステム20は、クラウドコンピューティングサービス(ウェブサービス)を提供する。具体的には、クラウドシステム20は、1つ又は複数の情報処理装置によって構成され、ウェブサービスを利用するユーザが利用可能なサービスを記憶している。
【0021】
最小権限特定装置10は、一例として、CPU(Central Processing Unit)などの演算装置11(プロセッサ)と、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ12と、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の外部記憶装置13と、キーボード、マウス、又はタッチパネル等の入力装置14と、ディスプレイ及びタッチパネル等の出力装置15と、通信装置16とを備える。また、クラウドシステム20は、CPU(Central Processing Unit)などの演算装置21、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ22、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の外部記憶装置23、及び、通信装置24等を備える。
【0022】
最小権限特定装置10において、所定の処理の実行に用いるプログラム等のデータは、一例として、外部記憶装置13に記憶され、演算装置11がRAMに読み出して実行する。クラウドシステム20において、所定の処理の実行に用いるプログラム等のデータは、一例として、外部記憶装置23に記憶され、演算装置21がRAMに読み出して実行する。
【0023】
最小権限特定装置10は、対象プログラムの実行が成功するために対象プログラムに付与する必要十分な権限を自動的に特定する。対象プログラムは、クラウド上でシステムを構築するためのデータであるため、最小権限特定装置10は、通信ネットワーク5を用いて対象プログラムをクラウドシステム20にアップロードする。続いて、最小権限特定装置10を構成する機能について説明する。
【0024】
<最小権限特定装置>
図2は、最小権限特定装置が備える機能の一例を説明する図である。最小権限特定装置10は、演算装置11により実行されるプログラムとして、入力部104、システム環境特徴解析部1001、候補権限決定部1201、最小権限導出部105、最小権限違反判定部107、暗黙使用サービス該当指数導出部501、操作対象サービスランキング導出部701を有する。
【0025】
入力部104では、ユーザーが作成した、システム環境および現行権限情報301、アプリコード101、実行結果判定用プログラム103、プログラム使用サービス情報901が取得される。これらのデータは、一例として、ユーザにより入力される。なお、プログラム使用サービス情報901は、処理にあたって任意で取得する情報であり、省略されてもよい。
【0026】
最小権限特定装置10で求める最小権限は、システム環境および現行権限情報301にて設定される。しかし、求める最小権限は、システム環境および現行権限情報301だけでなく、アプリコード101でアプリケーションとしてどのような動作を実現するかにも依存する。従って、システム環境および現行権限情報301とアプリコード101のセットを含めたデータのことを、最小権限を求める対象となる対象プログラム102と呼称することとする。次に、各入力データ(301、101、103、901)について、具体的に説明する。
【0027】
<システム環境および現行権限情報>
図3はシステム環境および現行権限情報の一例を示す図である。システム環境および現行権限情報301は、システム構築に用いるサービスの情報や現在付与されている権限情報を記したプログラムである。
図3に示すように、システム環境および現行権限情報301は、権限設定部302とサービス設定部304を有する。
【0028】
図3において、権限設定部302では、CodeBuileRole、CloudFormationRole、CodePipelineRoleの計3つのロールと呼ばれる権限設定が定義されている。権限記述部303では、CodeBuileRoleの設定としてクラウドのサービスであるS3を操作対象とする2つの権限(s3:PutObject、s3:GetObject)とLogsを操作対象とする権限(logs:CreateLogStream)が許可される設定が記述されている。
【0029】
サービス設定部304では、システム構築に用いるサービスとしてS3、CodeCommit、CodeBuild、CodePipelineの情報が記述されている。その中でも権限付与部305では、CodeBuildというサービスの機能を持つ実体(以後、リソースと呼称する)であるCodeBuildProjectにCodeBuildRoleを付与している。これにより、CodeBuildのリソースであるCodeBuildProjectは権限記述部303にある権限を用いてS3とLogsの特定の操作が可能となる。なお、権限記述部303には入力部の入力時から、ある権限が設定されていても良いし、されていなくてもよい。
【0030】
<その他のデータ>
アプリコード101は、システム環境および現行権限情報301で構築されるシステム上で実行するアプリケーションのコードである。本実施形態では、パイプラインを用いてデプロイするアプリケーションのコードなどが該当する。
【0031】
実行結果判定用プログラム103は、アプリコード101の実行が成功したか失敗したかの情報を出力するプログラムである。実行結果判定用プログラム103にはアプリコードが満たすべき要件が反映されている。本実施形態では、例えば、リポジトリにファイルをコミットするとパイプラインの機能として自動的にビルド、デプロイまで実行が成功するという要件がそれに当たる。
【0032】
プログラム使用サービス情報901は、クラウドのサービスのうちシステム環境および現行権限情報部301では記述されていないが対象プログラム102が使用することをユーザーが認識しているサービスがあれば記述することができるデータである。これは後述するシステム環境特徴解析部1001等にて使用することができる。
【0033】
次に、複数の他プログラムシステム環境および権限情報401と暗黙使用サービスについて説明する。複数の他プログラムシステム環境および権限情報401は、他プログラムシステム環境および権限情報411(すなわち、対象プログラム102とは異なっており、システム構築に用いるサービスの情報や権限情報を記した既存のプログラム)の集合(群)である。
【0034】
なお、複数の他プログラムシステム環境および権限情報401に含まれる他プログラムシステム環境および権限情報411は、一例として、本実施形態で説明する方法を用いて過去に最小権限を特定したプログラムのシステム環境権限情報であっても良い。また、システム環境および権限情報として有効であれば、ユーザーが作成したシステム環境権限情報や、インターネット上で公開されているシステム環境権限情報であっても良い。
【0035】
<他プログラムシステム環境および権限情報>
図4は他プログラムシステム環境および権限情報の一例を示す図である。システム環境および現行権限情報301と同じく他プログラムシステム環境および権限情報411は権限設定部412とサービス設定部416を有する。システム環境および権限情報として有効であれば、他プログラムシステム環境および権限情報411に設定される権限は、最小権限であっても良いし最小権限でなくても良い。
【0036】
権限付与サービス設定部413には、権限設定部412の権限をどのサービスに付与するかが記述される。
図4では権限付与サービス設定部413にはサービスの1つであるLambdaに権限を付与する旨が記述されており、実際に権限付与部417ではサービスLambdaのリソースLambdaFunctionに権限設定部412のロールLambdaRoleが付与されている。このLambdaのように、権限が付与されるサービスを権限付与サービスと呼称することとする。
【0037】
サービス設定部416には、システム構築に用いるサービスが記述される。
図4ではサービス設定部416に記述されるサービスLambda、S3、APIGatewayのうち、権限付与サービスに該当しないS3、APIGatewayを環境構築サービスと呼称することとする。
【0038】
権限記述部414にある操作対象サービス記述部415には、権限記述部414にある権限によってどのサービスに対して一定の操作が可能となるか記述される。
図4では権限記述部の権限s3:GetObjectによってサービスS3に対する一定の操作が、logs:PutLogEventsとlogs:CreateLogGroupとlogs:CreateLogStreamによってLogsに対する一定の操作が可能になると分かる。このS3とLogsのように権限の操作対象となるサービスを操作対象サービスと呼称することとする。
【0039】
操作対象サービスには、
図4におけるS3のように環境構築サービスである、つまりシステム環境および権限情報411において本環境の構築に用いられると明記されているサービスと、Logsのように環境構築サービスでない、つまりシステム環境および権限情報411において本環境の構築に用いられると明記されていないサービスが存在する。
【0040】
このLogsのように、操作対象サービスとなるが環境構築サービスでないサービス、つまりシステム環境および権限情報411においてリソースとして定義されていないにも関わらずシステム環境および権限情報411に定義されている権限の操作対象となるサービスを、仮暗黙使用サービスと呼称することとする。ここで、システム環境および権限情報411が複数ロールを持つ場合では、複数ロールの和集合に該当するサービスを、仮暗黙使用サービスと呼称することとする。
【0041】
そして、仮暗黙使用サービスのうち、システム環境および権限情報411においてリソースとして定義されていないにも関わらず最小権限の操作対象となるサービスを暗黙使用サービスと呼称することとする。
【0042】
暗黙使用サービスの定義より、システム環境および現行権限情報301のサービス設定部304に記述されたサービスおよび暗黙使用サービスを操作対象とする全ての権限が、対象プログラム102の最小権限になり得る。そこで、本実施形態では、対象プログラム102の暗黙使用サービスを特定し、候補権限における権限の数を絞る処理を行う。
【0043】
この処理にあたり、複数の他プログラムシステム環境および権限情報401に含まれる他プログラムシステム環境および権限情報411に記述される権限付与サービス、環境構築サービス、操作対象サービス、そして仮暗黙使用サービスの情報から作成するデータが用いられる。
【0044】
そして、本実施形態によれば、サービス単位の権限で候補権限の絞り込みが可能である。サービス単位の権限とは、あるサービスを操作する全権限を指す。例えば、S3のサービス単位の権限はs3:*となり、S3をストレージ機能とするときに、s3:*はS3を操作対象とする全ての権限となる。ここで、全サービス数は全権限数と比べて少ないため、権限単位で候補権限を絞り込むよりも少ない回数で権限の絞り込みが可能となる。
【0045】
また、暗黙使用サービスを絞り込むために用いる他プログラムは、複数の他プログラムシステム環境および権限情報401内の他プログラムシステム環境および権限情報411のみであり、他アプリコードは必要としない。加えて、他プログラムシステム環境および権限情報411に記述される権限は、最小権限か否かを問わない。以上より、暗黙使用サービスを絞り込むために用いる他プログラム収集が容易となるため汎用性が高まる。
【0046】
次に、上記した本実施形態の処理を行うにあたり、複数の他プログラムシステム環境および権限情報401からデータを抽出する処理について説明する。この処理では、暗黙使用サービス該当指数導出部501、および、操作対象サービスランキング導出部701が、一例として、演算装置11に実行される。
【0047】
暗黙使用サービス該当指数導出部501は、複数の他プログラムシステム環境および権限情報401を入力として、他プログラムシステム環境および権限情報411の仮暗黙使用サービス情報から各サービスの暗黙使用サービスへのなり易さを算出する。そして、暗黙使用サービス該当指数導出部501は、後述する候補権限決定部1201が暗黙使用サービスの特定に用いるデータであり、該候補権限決定部1201が入力とする暗黙使用サービス該当指数情報601を出力する。
【0048】
操作対象サービスランキング導出部701について説明する。操作対象サービスランキング導出部701は、同じく複数の他プログラムシステム環境および権限情報401を入力として、各サービスが権限付与サービスである場合にどのサービスが操作対象サービスとなり易いかを導出する。そして、操作対象サービスランキング導出部701は、候補権限決定部1201が暗黙使用サービスの特定に用いるデータであり、該候補権限決定部1201が入力とする操作対象サービスランキング情報801を出力する。
【0049】
なお、暗黙使用サービス該当指数情報601と操作対象サービスランキング情報801は、候補権限決定部1201が動作する前に準備されていれば良く、この条件を満たしていればいつ準備されるかは問わない。従って、暗黙使用サービス該当指数導出部501および操作対象サービスランキング導出部701は、最小権限特定装置10から分散された装置で実行されてもよい。そして、最小権限特定装置10は、暗黙使用サービス該当指数導出部501および操作対象サービスランキング導出部701からの出力を、適宜の手法(一例として、通信装置16を用いた手法)により取得してもよい。
【0050】
次に、上記した本実施形態の処理に関し、対象プログラム102の暗黙使用サービスを特定し、候補権限を決定する処理について説明する。この処理では、システム環境特徴解析部1001、および、候補権限決定部1201が、演算装置11に実行される。
【0051】
システム環境特徴解析部1001は、入力部104で得たシステム環境および現行権限情報301およびプログラム使用サービス情報901を入力とし、対象プログラム102の権限付与サービスと環境構築サービスを解析結果情報1101として出力する。
【0052】
候補権限決定部1201は、解析結果情報1101と暗黙使用サービス該当指数情報601、操作対象サービスランキング情報801、システム環境および現行権限情報301、アプリコード101、実行結果判定用プログラム103を入力とする。
【0053】
候補権限決定部1201は、解析結果情報1101と暗黙使用サービス該当指数情報601、操作対象サービスランキング情報801を用いて作成したサービス単位の権限群を、システム環境および現行権限情報301の権限記述部303に設定する。そして、候補権限決定部1201は、システム環境および現行権限情報301とアプリコード101を用いてクラウドシステム20に構築したアプリケーションを実行する実行結果判定用プログラム103を用いて実行し、実行結果に基づいて最小権限の操作対象となるサービスを過不足なく導出し、それらのサービスに関するサービス単位の権限の集合である候補権限を決定し、候補権限情報1401に出力する。
【0054】
次に、候補権限情報1401を用いて最小権限を特定する最小権限導出部105の処理、および、最小権限違反判定部107の処理について説明する。本実施形態では、これらの処理は、演算装置11に実行される。
【0055】
最小権限導出部105は、入力部104で得たシステム環境および現行権限情報301、アプリコード101、実行結果判定用プログラム103のいずれか又は全てと候補権限情報1401を用いて最小権限を導出し、最小権限情報106に出力する。最小権限情報106は、対象プログラム102の最小権限がシステム環境および現行権限情報301の権限設定部302に記述されるロール毎に分類されて出力される情報である。
【0056】
なお、最小権限導出部105の処理は、候補権限情報1401を用いて最小権限を適切に導出できれば特に限定されない。最小権限導出部105は、例えば、候補権限に含まれる機能の一部または全てに権限を付与した対象プログラム102を実行し、その実行に失敗した場合に権限を付与した機能の一部から権限を抜いて対象プログラム102を再度実行することにより、対象プログラム102の最小権限を導出してもよい。
【0057】
最小権限違反判定部107では、入力部104で得たシステム環境および現行権限情報301と最小権限情報106を入力として、システム環境および現行権限情報301の権限記述部303の権限情報と最小権限情報106を比較して最小権限違反があるか否か、最小権限違反があるとしたら具体的にどの権限においてかを判定結果情報108に出力する。なお、最小権限違反判定部107の処理は、最小権限違反を判定することができればよく、特に限定されない。
【0058】
以上に説明した最小権限特定装置10及びクラウドシステム20の各機能は、一例として、それらのハードウェアによって、もしくは、それらの演算装置(11、21)が、メモリ(11、21)や外部記憶装置(13、23)に記憶されている各プログラムを読み出して実行することにより、実現される。また、これらのプログラムは、例えば、二次記憶デバイスや不揮発性半導体メモリ、ハードディスクドライブ、SSDなどの記憶デバイス、又は、ICカード、SDカード、DVDなどの、各情報処理装置で読み取り可能な非一時的データ記憶媒体に格納される。
【0059】
<処理説明>
続いて、クラウド実行システム1において行われる処理について、フローチャート等を参照しながら具体的に説明する。なお、暗黙使用サービス該当指数導出部501、操作対象サービスランキング導出部701、システム環境特徴解析部1001、候補権限決定部1201の処理を中心に説明する。本実施形態では、これらの処理は、演算装置11により実行される。
【0060】
<暗黙使用サービス該当指数導出処理>
図5は、暗黙使用サービス該当指数導出部501で行われる暗黙使用サービス該当指数導出処理の一例を示す図である。暗黙使用サービス該当指数導出処理S1では、まず暗黙使用サービス該当指数導出部501が複数の他プログラムシステム環境および権限情報401を取得する(S502)。続いて、暗黙使用サービス該当指数導出部501が、S502で取得した複数の他プログラムシステム環境および権限情報401内のそれぞれの他プログラムシステム環境および権限情報411の権限設定部412に記載のある各ロールについて、権限付与サービス、操作対象サービス、環境構築サービスを取得する(S503)。ここで、S503の処理例を、
図4に示す他プログラムシステム環境および権限情報411を基に、具体的に説明する。
【0061】
S503の処理において、権限設定部412のLambdaRoleに対して、暗黙使用サービス該当指数導出部501は、権限付与サービス設定部413の記述“lambda.amazonaws.com”より権限付与サービスLambdaを取得しても良いし、権限付与部417よりLambdaのリソースLambdaFunctionにLambdaRoleが付与されていることから、これより権限付与サービスLambdaを取得しても良い。後者の処理を行う場合では、ロールが付与されるキー(Role、Roles、ServiceRoleなど)のリストを保持しておいて、それらのリストからロールの設定がされる箇所が探索されても良いし、LambdaRoleのようなロール名での探索が行われても良い。
【0062】
環境構築サービスについて、暗黙使用サービス該当指数導出部501は、サービス設定部416のうち、LambdaRoleの権限付与部413を持つリソースLambdaFunction以外の権限付与リソース外サービス設定部418を参照する。暗黙使用サービス該当指数導出部501は、権限付与リソース外サービス設定部418のリソースタイプ(Typeというキーに対応する部分に記載のある、リソースの種別)から、権限付与リソース外サービス設定部418で設定されるサービスを取得する。以上の処理により、サービスLambda、S3、APIGatewayのうち、権限付与サービスに該当しないサービスであるS3、APIGatewayが環境構築サービスとして取得される。
【0063】
操作対象サービスについて、暗黙使用サービス該当指数導出部501は、LambdaRoleの権限記述部414より、S3とLogsを取得する。この際、権限記述部414の操作対象サービス記述部415より操作対象サービスを取得しても良い。また、権限と権限の操作対象となるサービスの対応を記述したデータ(この説明では、表)が保持され、このデータを参照して権限の操作対象サービスを取得しても良い。
【0064】
ここで、後者の場合、サービスとそのサービス単位の権限の対応を柔軟に決定できる。例えば、ec2:*に属する権限をAmazon EC2の権限、Amazon VPCの権限などと分割して、サービス単位の権限を“サービス名:*”という形にとらわれずに設定することが可能である。ただし、その場合、権限付与サービスと環境構築サービスでも同じサービス分類を用いる必要がある。例えば、ec2:*に属する権限をAmazon EC2の権限、Amazon VPCの権限などと分割する場合であり、サービス設定部416に記述されたリソースのリソースタイプがAWS::EC2::VPCの場合には、権限付与サービスまたは環境構築サービスにはAmazon VPCを取得する必要がある。そのため、必要に応じリソースタイプとサービスの対応表も必要となる。
【0065】
このようにして、LambdaRoleから権限付与サービスとしてLambda、環境構築サービスとしてS3とAPIGateway、操作対象サービスとしてS3とLogsが取得できる。他プログラムシステム環境および権限情報411の権限設定部412に複数のロールが設定されていた場合、暗黙使用サービス該当指数導出部501は、各ロールに対して権限付与サービス、環境構築サービス、操作対象サービスを取得する。この権限付与サービス、環境構築サービス、操作対象サービスの組を1データとし、他プログラムシステム環境および権限情報411それぞれの各ロールに対してデータを取得し保持する。なお、権限付与サービス、環境構築サービス、操作対象サービスのうちどれか1つでも空である、つまり、これら全てにサービスが割り当てられていないデータについては、そのデータは記録せず削除する。
【0066】
続いて、S503で取得した権限付与サービス、環境構築サービス、操作対象サービスの組を1データとするデータ群から、暗黙使用サービス該当指数導出部501が、各サービスが仮暗黙使用サービスとして出現する割合と操作対象サービスとして出現する割合を導出する(S504)。
【0067】
例えば
図4の権限設定部412のLambdaRoleの例では、S3とLogsが操作対象サービスとして出現している。加えて、S3は環境構築サービスに属しているもののLogsは環境構築サービスに属していないため、Logsは仮暗黙使用サービスと分かる。このとき、暗黙使用サービス該当指数導出部501は、S3の操作対象サービス出現回数とLogsの操作対象サービス出現回数をそれぞれ1増やす。加えてLogsの仮暗黙使用サービス出現回数を1増やす。
【0068】
暗黙使用サービス該当指数導出部501は、このような処理を各データに対して行い、各サービスの操作対象サービス出現回数と仮暗黙使用サービス出現回数を記録する。その後、各サービスの操作対象サービス出現割合を、割合を求めるサービスの操作対象サービス出現回数を全データ数で割ったもので、導出する。加えて、各サービスの仮暗黙使用サービス出現割合を、割合を求めるサービスの仮暗黙使用サービス出現回数を操作対象サービス出現回数で割ったもので、導出する。
【0069】
続いて、S504で取得した各種出現回数を用いて、暗黙使用サービス該当指数導出部501が、各サービスの暗黙使用サービス該当指数を導出し、暗黙使用サービス該当指数情報601として出力する(S505)。暗黙使用サービス該当指数の導出に仮暗黙使用サービス出現割合だけでなく操作対象サービス出現割合を用いることで、例えば全データ中で操作対象サービスとして1回しか出現しておらずかつそのデータで仮暗黙使用サービスとして出現したサービスの暗黙使用サービス該当指数が高くなることを防げる。
【0070】
ここで、暗黙使用サービス該当指数情報601の一例を説明する。
図6は、暗黙使用サービス該当指数情報の一例を示す図である。暗黙使用サービス該当指数情報601は、サービス名602とサービス名602の各サービスの暗黙使用サービス該当指数である暗黙使用サービス該当指数603を有する。例えば、
図6では、Logsの暗黙使用サービス該当指数は1.0である。ここで、
図6の暗黙使用サービス該当指数601は、各サービスの仮暗黙使用サービス出現割合と操作対象サービス出現割合を掛け合わせて正規化したものである。しかし、暗黙使用サービス該当指数601の導出方法は、以上の方法にとらわれず、操作対象サービス出現割合および仮暗黙使用サービス出現割合を引数とする関数によって作成されればよい。
【0071】
<操作対象サービスランキング導出処理>
図7は操作対象サービスランキング導出部701で行われる操作対象サービスランキング導出処理の一例を示す図である。操作対象サービスランキング導出処理S2では、まず操作対象サービスランキング導出部701が複数の他プログラムシステム環境および権限情報401を取得する(S702)。
【0072】
続いて、操作対象サービスランキング導出部701が、S702で取得した複数の他プログラムシステム環境および権限情報401内のそれぞれの他プログラムシステム環境および権限情報411の権限設定部412に記載のある各ロールに対して、権限付与サービス、操作対象サービス、環境構築サービスを取得する(S703)。
【0073】
本実施形態において、S702およびS703それぞれの処理は、S502およびS503と同様の処理である。そこで、次のような変更が行われてよい。すなわち、操作対象サービスランキング導出部701および暗黙使用サービス該当指数導出部501のうちの一方で、権限付与サービス、操作対象サービス、環境構築サービスを取得する処理が省略され、他方で取得される権限付与サービス、操作対象サービス、環境構築サービスの組を1データとするデータ群を入力として、S504以降およびS704以降の処理を行うように、操作対象サービスランキング導出部701および暗黙使用サービス該当指数導出部501は構成されても良い。
【0074】
続いて、S703で作成したデータ群を用いて、操作対象サービスランキング導出部701が、あるサービスが権限付与サービスの場合に操作対象サービスとなり易いサービスの順位を導出し、操作対象サービスランキング情報801に出力する(S704)。
【0075】
図8は、操作対象サービスランキング情報の一例を示す図である。操作対象サービスランキング情報801は、権限付与サービス名802と、各サービスが権限付与サービスである場合に操作対象となり易いサービスのランキングである操作対象サービスランキング803と、を有する。
図8の例では、CodeBuildが権限付与サービスの場合には、Logsが最も操作対象サービスとなり易く、次いでS3が操作対象サービスとなり易いと分かる。
【0076】
図8の操作対象サービスランキング情報801の例において、例えば、権限付与サービスがCodeBuildの場合の操作対象サービスランキング803は、S703で作成したデータ群のうちCodeBuildが権限付与サービスであるデータ群において、各サービスを操作対象サービスとしての出現回数の多い順に並べたものである。ただし、操作対象サービスランキング情報801の導出方法は、上記に限定されず、S703で作成したデータ群から導出できるものであれば良い。
【0077】
例えば、各サービスの操作対象サービスとしての出現回数を、仮暗黙使用サービス出現回数と仮暗黙使用サービスでない出現回数とに分けて、それぞれに暗黙使用サービス該当指数601を用いて掛け合わせて導出された数値を基に、ランキングが作成されても良い。
【0078】
また、例えば、全データにおいてある権限付与サービスに対して操作対象サービスとして出現しないサービスが複数ある場合には、該サービスの順位を操作対象サービスとして出現するサービスより下げ、更に、該権限付与サービスに対して操作対象サービスとして出現しないサービス同士では、例えば権限付与サービスが何であるかにとらわれず操作対象サービスとしての出現回数によって順位付けをすることで、ランキングが作成されてもよい。
【0079】
また、全データにおいて権限付与サービスとして出現しないサービスに対する操作対象サービスランキングにおいても同様に、例えば権限付与サービスが何であるかにとらわれず操作対象サービスとしての出現回数によって順位付けがされてもよい。
【0080】
<システム環境特徴解析処理>
図9はシステム環境特徴解析部1001で行われるシステム環境特徴解析処理の一例を示す図である。システム環境特徴解析部1001は、プログラム使用サービス情報901を入力の1つとすることができる。まずプログラム使用サービス情報901について説明する。
【0081】
(プログラムサービス情報)
図10はプログラム使用サービス情報の一例を示す図である。プログラム使用サービス情報901はプログラム使用サービス902を有する。プログラム使用サービスとは、システム環境および現行権限情報301のサービス設定部304に記載のないサービスでかつユーザーが環境構築サービスとなることを把握しているサービスを指す。
【0082】
既にクラウドシステム20に構築されているなどの理由から、環境構築サービスの中にはシステム環境および現行権限情報301に記載されないサービスも存在する。例えば、アプリコード101がS3バケットを用いる場合でも、クラウドシステム20に当該S3バケットがすでに構築されている場合にはシステム環境および現行権限情報301のサービス設定部304にS3バケットの記載がない場合がある。
【0083】
このとき最小権限にS3を操作する権限が含まれる場合、S3はシステム環境および現行権限情報301に記述がないので暗黙使用サービスとして候補権限決定部1201で特定されることとなる。しかし、S3が環境構築サービスとして利用されることをユーザーが入力部104に入力前に認識していた場合、候補権限決定部1201で暗黙使用サービスとしてS3を特定するための処理を行うのは非効率的である。ここで、プログラム使用サービス情報901を用いることで、ユーザーが環境構築サービスとして認識しているサービスを候補権限の特定に反映できるため、例として挙げた事象が解消される。
【0084】
以上のように、ユーザーが環境構築サービスとして認識しているサービスが、システム環境および現行権限情報301のサービス設定部304に記載されるサービスにない場合もあり、プログラム使用サービス情報901が用いられることもある。しかしながら、プログラム使用サービス情報901は入力部104で入力を必須としない。なお、
図10の例では、LambdaとAPIGatewayがプログラム使用サービスとして記述されている。
【0085】
図9の説明に戻る。システム環境特徴解析処理S3では、まずシステム環境特徴解析部1001がシステム環境および現行権限情報301とプログラム使用サービス情報901を取得する(S1002)。
【0086】
続いて、S1002で取得したシステム環境および現行権限情報301から、システム環境特徴解析部1001が、システム環境および現行権限情報301の権限付与サービスと環境構築サービスを取得および保持する(S1003)。権限付与サービスと環境構築サービスの取得方法は、S503およびS703で説明した内容に準ずる。
【0087】
最後に、システム環境特徴解析部1001は、S1003で取得した権限付与サービスと環境構築サービスに、プログラム使用サービス情報901に記述されるサービスを追加したうえで、権限付与サービスと環境構築サービスを解析結果情報(システム環境特徴解析情報1101)に出力する(S1004)。
【0088】
ここで、システム環境特徴解析情報1101について説明する。
図11は、システム環境特徴解析情報の一例を示す図である。システム環境特徴解析情報1101は、サービス名1102と各サービスのサービス種別1103を有する。サービス種別1103には、権限付与サービスまたは環境構築サービスのいずれか一方が記述される。例えば、
図11では、CodeCommitは環境構築サービスとして取得されていることが分かる。
【0089】
続いて、候補権限決定部1201で行う処理について説明する。本実施形態の候補権限決定処理S4によって、候補権限をサービス単位の権限で過不足なく導出可能となる。具体的には、対象プログラム102の最小権限が操作対象とするサービスを過不足なく抽出し、抽出したサービスを操作対象とするサービス単位の権限の候補権限とすることができることを意味する。
【0090】
<候補権限決定処理>
図12は、候補権限決定処理の一例を示す図である。候補権限決定処理S4では、まず候補権限決定部1201が、解析結果情報1101と暗黙使用サービス該当指数情報601、操作対象サービスランキング情報801、そして入力部104で取得した対象プログラム102、実行結果判定用プログラム103を取得する(S1202)。
【0091】
続いて、S1202で取得した各種情報から、候補権限決定部1201が、解析結果情報1101に記述される権限付与サービスと環境構築サービス、そして暗黙使用サービス該当指数情報601に記載の暗黙使用サービス該当指数が一定しきい値以上のサービスの和集合に該当する操作対象のサービスの全権限を、暫定の候補権限として保持する(S1203)。
【0092】
例えば、
図11の解析結果情報1101から、暫定の候補権限にはCodeBuild、CodePipeline、CloudFormationが権限付与サービスとして、S3、CodeCommit、Lambda、APIGatewayが環境構築サービスとして記述されている。従って、解析結果情報1101のサービス名1102に記載のある計7つのサービスのサービス単位の権限が、暫定の候補権限として保持される。加えて、例えばS1203における暗黙使用サービス該当指数のしきい値を0.4とする。このとき、
図6のS1203で暫定の候補権限には、暗黙使用サービス該当指数情報601のうちLogsとS3のサービス単位の権限を追加する。従って、この2つのサービスのサービス単位の権限を暫定の候補権限に追加し、権限の和集合を取る。そうすると、S1203処理完了後の暫定の候補権限は、codebuild:*、codepipeline:*、cloudformation:*、s3:*、codecommit:*、lambda:*、apigateway:*、logs:*の計8つのサービスのサービス単位の権限となる。
【0093】
このように、S1203では、暗黙使用サービス該当指数情報601を用いることで、多数のサービスに対してそのサービスが権限付与サービスとなる場合に暗黙使用サービスとして操作対象となり易いサービスを一括で候補権限に追加している。先ほど述べたS1203の例では、多数のサービスに対して暗黙使用サービスとなり易いサービスという意味で、logsが
図3の対象プログラム102の暗黙使用サービスの候補として追加されたこととなる。
【0094】
続いて、候補権限決定部1201が、S1203で導出した暫定の候補権限をシステム環境および現行権限情報301に設定し、対象プログラム102でクラウドシステム20に構築されるアプリケーションを実行結果判定用プログラム103で実行し、実行が正解したか失敗したかを取得する(S1204)。
【0095】
S1204の暫定の候補権限の付与では、例えば
図3ではCodeBuildRole、CodePipelineRole、CloudFormationRoleのそれぞれの権限記述部303に暫定の候補権限が記述される。このとき、入力部104への入力時にシステム環境および現行権限情報301の権限記述部303に付与されている権限は、S1204の権限設定時には権限記述部303より削除する。
【0096】
S1204でプログラム実行が成功すれば、S1203で導出した暫定の候補権限は対象プログラム102の最小権限を含むことが分かる。そのため、最小権限の操作対象とならないサービスのサービス単位の権限を削除するS1206に処理が進む。その一方で、S1204でプログラム実行が失敗した場合、S1203で導出した暫定の候補権限は対象プログラム102の最小権限を含まないので、暫定の候補権限を増加させる必要がある。そのため、候補権限決定部1201は、S1203で導出した暫定の候補権限に、操作対象サービスランキング情報801のうち解析結果情報1101に記載の権限付与サービスに対する操作対象サービスランキングの上位のサービスのサービス単位の権限を追加する(S1205)。
【0097】
例えば、
図11の解析結果情報1101よりCodeBuild、CodePipeline、CloudFormationが権限付与サービスなので、
図8の操作対象サービスランキング情報801では、候補権限決定部1201は、この3つのサービスそれぞれが権限付与サービスである場合のランキングを参照する。このとき各サービスの操作対象ランキングの1位はLogsとS3のため、この2つのサービスのサービス単位の権限をS1203で導出した暫定の候補権限に追加して暫定の候補権限とする。
【0098】
候補権限決定部1201は、S1205で暫定の候補権限を更新後、再度S1204の処理を行う。なお、直前のS1204の処理と後続のS1204の処理で暫定の候補権限が同じである場合、S1204は実行せずS1205を再度繰り返すことで、プログラム実行回数を削減しても良い。
【0099】
また、S1205では、候補権限決定部1201は、直前のS1205で追加した操作対象サービスランキングの次の順位のサービスを、サービス単位の権限として追加する。候補権限決定部1201は、例えば、直前のS1205でにおいて
図8の操作対象サービスランキング情報801で1位のサービスのサービス単位の権限を暫定の候補権限に追加していたら、後続のS1205では、
図8の操作対象サービスランキング情報801で2位以降のサービスのサービス単位の権限を暫定の候補権限に追加する。
【0100】
なお、S1205における操作対象サービスランキング情報801を用いた暫定の候補権限追加では、操作対象サービスランキング情報801におけるサービスのサービス単位の権限が何位ずつ追加されるかを問わない。S1205では、順位が高い方からの複数のサービスのサービス単位の権限がまとめて追加されてもよい。このようにして、候補権限決定部1201は、S1205で暫定の候補権限を追加してS1204で実行結果判定用プログラム103を実行することを、S1204で実行結果判定用プログラム103の実行が成功するまで繰り返す。そして、S1204で実行結果判定用プログラム103の実行が成功したとき、その時点での暫定の候補権限は対象プログラム102の最小権限を含むことが分かる。
【0101】
本実施形態の例では、S1205において
図8の操作対象サービスランキング情報801のうち3位まで暫定の候補権限に追加した際に、S1204の実行結果判定用プログラム103の実行が成功したとする。この時、暫定の候補権限は、S1203の暫定の候補権限にecr:*とiam:*が追加されたものとなる。
【0102】
候補権限決定部1201は、S1205では操作対象サービスランキング情報801を用いることで、ある特定のサービスに対してそのサービスが権限付与サービスとなる場合に操作対象となり易いサービスのサービス単位の権限を候補権限に追加している。そして、S1203において暗黙使用サービスでなくかつ最小権限の操作対象となるサービスのサービス単位の権限の候補は暫定の候補権限に追加されている。従って、S1205では、ある特定のサービスに対してそのサービスが権限付与サービスとなる場合の操作対象となり易いサービスのうち、対象プログラム102の暗黙使用サービスの候補となるサービスを操作対象とする権限が候補権限に追加されるということとなる。
【0103】
先ほど述べたS1205の例では、CodePipelineおよびCloudFormationに対して操作対象サービスとなり易くシステム環境および現行権限情報301の最小権限の暗黙使用サービスの候補となり得るという意味でIAMが、CodeBuildに対して操作対象サービスとなり易くシステム環境および現行権限情報301の最小権限の暗黙使用サービスの候補となり得るという意味でECRが追加されたこととなる。
【0104】
S1204の実行結果判定用プログラム103の実行成功時点で、対象プログラム102の最小権限の操作対象となるサービスを含むサービスのサービス単位の権限は抽出できている。しかし、暫定の候補権限には最小権限の操作対象とならないサービスのサービス単位の権限も含まれている可能性がある。
【0105】
そのため、S4におけるS1206以降の処理では、暫定の候補権限から最小権限の操作対象とならないサービスのサービス単位の権限を削除する処理を行う。この処理によって、候補権限が操作対象とするサービスと対象プログラム102の最小権限の操作対象となるサービスが一致し、サービス単位での過不足ない候補権限の抽出が可能となる。
【0106】
S1206は、S1207からS1210の処理の繰り返す処理である。S1206(ループ1)は、S1204の実行結果判定用プログラム103の実行成功時点での暫定の候補権限が操作対象とする全てのサービスに対して、対象プログラム102の最小権限の操作対象となるサービスか否かを検証するまで繰り返す。
【0107】
S1206で繰り返す処理の詳細を説明する。まず、候補権限決定部1201が暫定の候補権限から一定数のサービスのサービス単位の権限を削除する(S1207)。例えば、S1204の実行結果判定用プログラム103の実行成功時点での暫定の候補権限の例から、ecr:*とiam:*が削除されたとする。
【0108】
続いて、候補権限決定部1201が、直前のS1207で導出した暫定の候補権限をシステム環境および現行権限情報301に設定し、対象プログラム102でクラウドシステム20に構築されるアプリケーションを実行結果判定用プログラム103で実行し、実行が正解したか失敗したかを取得する(S1208)。
【0109】
S1208で実行結果判定用プログラム103の実行が成功すれば、直前のS1207で削除したサービス単位の権限が操作対象とするサービスは、対象プログラム102の最小権限の操作対象でないということが分かる。従って、S1207で削除したサービス単位の権限は、暫定の候補権限から削除したままとする。
【0110】
S1208で実行結果判定用プログラム103の実行が失敗した場合、直前のS1207で削除したサービス単位の権限が操作対象とするサービスのいずれかが、対象プログラム102の最小権限の操作対象であることとなる。そのため、候補権限決定部1201が直前のS1207で削除したサービス単位の権限全てを暫定の候補権限に再追加する(S1209)。
【0111】
ここで、S1208で実行結果判定用プログラム103の実行が失敗し、直前のS1207で削除したサービス単位の権限が操作対象とするサービスが1つである場合、その削除したサービス単位の権限が操作対象とするサービスは、対象プログラム102の最小権限の操作対象であるということが分かる。ただし、直前のS1207で削除したサービス単位の権限が操作対象とするサービスが複数である場合、その削除したサービス単位の権限のどのサービスが、対象プログラム102の最小権限の操作対象であるか分からない。
【0112】
そのため、候補権限決定部1201は、まずS1207で削除したサービス単位の権限が操作対象とするサービスが複数であるか判定する(S1210)。ここで、複数であると判定された場合、候補権限決定部1201は、S1207で削除したサービス単位の権限が操作対象とするサービスのうち、どのサービスが対象プログラム102の最小権限の操作対象となるか検証するため、S1211の処理を行う。
【0113】
S1211の処理はS1212からS1214の処理の繰り返しである。S1211(ループ2)は、S1207の処理で削除したサービス単位の権限が操作対象とする全てのサービスについて、対象プログラム102の最小権限の操作対象となるか検証するまで繰り返す。
【0114】
S1211で繰り返す処理の詳細を説明する。まず、候補権限決定部1201が、暫定の候補権限から、S1207で削除したサービスの権限のうち1つのサービスの権限を削除する(S1212)。
【0115】
例えば、S1207でecr:*とiam:*を削除してS1208の実行結果判定用プログラム103の実行が失敗したとする。そのとき、S1212では、暫定の候補権限からecr:*かiam:*どちらか一方のサービス単位の権限を削除する。例えば、ecr:*を削除したとする。
【0116】
続いて、候補権限決定部1201が、直前のS1212で導出した暫定の候補権限をシステム環境および現行権限情報301に設定し、対象プログラム102でクラウドシステム20に構築されるアプリケーションを実行結果判定用プログラム103で実行し、実行が正解したか失敗したかを取得する(S1213)。
【0117】
S1213で実行結果判定用プログラム103の実行が成功すれば、直前のS1212で削除したサービス単位の権限が操作対象とするサービスは、対象プログラム102の最小権限の操作対象でないと分かる。
【0118】
その一方で、実行が失敗した場合、直前のS1212で削除したサービス単位の権限が操作対象とするサービスが、対象プログラム102の最小権限の操作対象であることとなる。そのため、この場合、候補権限決定部1201が、直前のS1212で削除したサービス単位の権限を暫定の候補権限に再追加する(S1214)。
【0119】
例えば、S1207でecr:*とiam:*を削除してs1208の実行結果判定用プログラム103の実行が失敗し、S1212では暫定の候補権限からecr:*を削除してS1213の実行結果判定用プログラム103の実行が成功したとする。このとき、直前のs1208で実行結果判定用プログラム103が実行失敗したのは、IAMが対象プログラム102の最小権限の操作対象であるためだと分かる。このような場合には、S1211の処理をiam:*について繰り返すことはせず、暫定の候補権限にiam:*を追加してS1206に戻っても良い。
【0120】
S1206の処理終了後、候補権限決定部1201は、S1206終了時点での候補権限を候補権限情報1401に出力する(S1215)。
【0121】
以上で説明した一例のように、候補権限決定部1201は処理を行う。そして、演算装置11により、候補権限決定部1201の処理に関するデータが、一例として、表示装置15の画面に出力されてもよい。次に、画面表示の態様の一例について説明する。
【0122】
図13は、候補権限決定処理の実行中に最小権限特定装置が表示する進捗情報画面の一例を示す図である。候補権限特定画面1301は、現在の操作対象サービス数1302と候補権限状況詳細1303とプログラム実行回数1306を有する。このうち、候補権限状況詳細1303は、候補サービス1304と候補サービス状態1305を有する。
【0123】
例えば、
図13の場合、現在はcodebuild:*、codepipeline:*、cloudformation:*、s3:*、codecommit:*、lambda:*、apigateway:*、logs:*、iam:*がシステム環境および現行権限情報301に付与されており、対象プログラム102が実行されている。このうち、lambda:*、apigateway:*、logs:*、iam:*はこれまでの候補権限決定処理の過程で対象プログラム102の最小権限の操作対象となるサービスのサービス単位の権限であると確定している。また、ecr:*はこれまでの候補権限決定処理の過程で対象プログラム102の最小権限の操作対象となるサービスのサービス単位の権限でないと確定しており、削除済みとされている。それ以外のサービスについては対象プログラム102の最小権限の操作対象となるか未確定である。
【0124】
次に、候補権限決定部1201が決定した候補権限情報1401の一例を説明する。
図14は、候補権限決定部1201が出力する候補権限情報の一例を示す図である。候補権限情報1401は候補権限1402を有する。例えば
図14では、codebuild:*、cloudformation:*、s3:*、codecommit:*、lambda:*、apigateway:*、logs:*、iam:*が候補権限と分かる。候補権限決定処理S4のS1206以降の処理により、これらの候補権限が操作対象とするサービスは、対象プログラム102の最小権限の操作対象となるサービスと一致する。従って、候補権限をサービス単位で過不足なく導出したことになる。
【0125】
本実施形態では、クラウド上に構築するアプリコード101とシステム環境および現行権限情報301を含む対象プログラム102を入力として最小権限を含む権限の集合(候補権限)を決定する候補権限決定部1201が、暗黙使用サービスを特定することを特徴とする。
【0126】
そして、上記で説明したように、最小権限導出部105は、候補権限情報1401を用いて、適宜の手法により対象プログラム102の最小権限を導出し、最小権限違反判定部107は、適宜に手法により最小権限違反を判定する。ここで、最小権限導出部105は、一例として、候補権限の一部または全ての権限を付与した対象プログラム102を実行し、実行結果に基づいて付与する権限を変更して対象プログラム102を実行することを繰り返し、対象プログラム102の最小権限を導出してもよい。
【0127】
候補権限決定部1201は、暗黙使用サービスの特定に際し、複数の他プログラムのシステム環境および権限情報401から導出するプログラムに記載がなくかつ権限の操作対象になるクラウドが提供する複数プログラムやAPI(Application Programming Interface)などの機能(サービスと呼称する)の内訳を用いて作成した暗黙使用サービス該当指数情報601と、複数の他プログラムのシステム環境および権限情報401から導出した、権限が付与されるサービスがどのサービスを操作対象とする場合が多いかの順位に関する情報(操作対象サービスランキング情報801)を用いる。
【0128】
そして、候補権限決定部1201は、対象プログラム102の実行が成功するまで対象プログラム102に付与する権限を権限の操作対象となるサービス単位で増加させる。また、候補権限決定部1201は、候補権限決定処理S4において対象プログラム102の実行が成功した場合、最小権限にならない権限をサービス単位で適宜に削除し、候補権限を決定する。
【0129】
なお、暗黙使用サービス該当指数は、そのサービスが複数のプログラムのシステム環境および権限情報401において環境構築サービスでなくかつ権限の操作対象になるサービス(仮暗黙使用サービス)として出現する割合と、そのサービスが複数プログラムのシステム環境および権限情報401で設定される権限の操作対象となるサービス(操作対象サービス)として出現する割合を基に導出される。また、操作対象サービスランキングは、複数プログラムのシステム環境および権限情報401において権限を付与されるサービスに対して操作対象となるサービスの割合を基に導出される。
【0130】
従って、本実施形態によれば、候補権限を機能単位(サービス単位)で過不足なく自動的に導出可能となる。そして、候補権限を絞ることで、コストの抑制を図ることができる。また、暗黙使用サービス該当指数と操作対象サービスランキングの作成では、複数プログラムのシステム環境および権限情報のみを用いるため、最小権限が求まった複数プログラム(システムおよび権限情報とアプリコードのセット)を用いる場合と比べ汎用性が高まる。
【0131】
以上実施形態について説明したが、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、実施形態の構成の一部について、他の構成の追加、削除、置換をすることが可能である。
【0132】
本実施形態では、最小権限特定装置10が説明されたが、最小権限特定装置10から最小権限導出部105や最小権限違反判定部107に関する処理が省略された、候補権限を決定する候補権限決定装置が提供されてもよい。すなわち、プロセッサを備え、プロセッサは、候補権限決定部1201を実行して、最小権限の操作対象となる機能の全権限である候補権限を決定する、候補権限決定装置が提供されてもよい。なお、暗黙使用サービス該当指数および操作対象サービスランキングは、複数のプログラムのシステム環境および権限情報401を用いた上記と同様の手法で、この候補権限決定装置により求められてもよい。その一方で、分散された他の装置で求められ、その結果がこの候補権限決定装置に入力されてもよい。
【0133】
そして、この候補権限決定装置が決定した候補権限は、最小権限を特定する適宜の装置(一例として、最小権限導出部105を実行し、上記の説明と同様の方法で、候補権限の一部または全ての権限を付与した対象プログラム102を実行し、実行結果に基づいて付与する権限を変更して対象プログラム102を実行することを繰り返し、対象プログラム102の最小権限を判定する装置)に出力されてもよい。すなわち、候補権限決定装置と、候補権限決定装置が決定した候補権限に基づく対象プログラムの実行結果を利用して、対象プログラムの最小権限を特定する装置と、を備える最小権限特定システムが提供されてもよい。また、最小権限特定システムは、最小権限違反判定部107に関する処理を行うシステムであってもよい。
【0134】
最小権限特定装置10および候補権限決定装置は、非一時的な記憶媒体を用いたデータの入出力に用いるインタフェースを備えてもよい。そして、該インタフェースを介したデータの入出力が行われてもよい。なお、記憶媒体としては、一例として、可搬性のある非一時的なデータ記憶媒体を用いることができる。
【符号の説明】
【0135】
1 クラウド実行システム、
10 最小権限特定装置、
20 クラウドシステム、
104 入力部、
501 暗黙使用サービス該当指数導出部、
701 操作対象サービスランキング導出部、
1001 システム環境特徴解析部、
1201 候補権限決定部、
102 対象プログラム、
301 システム環境および現行権限情報、
601 暗黙使用サービス該当指数情報、
801 操作対象サービスランキング情報。