JP2022148161A - Access control method and access control program - Google Patents
Access control method and access control program Download PDFInfo
- Publication number
- JP2022148161A JP2022148161A JP2021049734A JP2021049734A JP2022148161A JP 2022148161 A JP2022148161 A JP 2022148161A JP 2021049734 A JP2021049734 A JP 2021049734A JP 2021049734 A JP2021049734 A JP 2021049734A JP 2022148161 A JP2022148161 A JP 2022148161A
- Authority
- JP
- Japan
- Prior art keywords
- access
- software
- container
- data table
- name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】ソフトウェアの種別ごとにDBへのアクセスを制限できるようにする。【解決手段】コンピュータは、管理対象ノード上に設けられた第1コンテナで実行されているソフトウェアに一時的に割り当てられたポート番号を送信元とするデータテーブルへのアクセス要求を、管理対象ノードから受信する。するとコンピュータは、管理対象ノード上に設けられた第2コンテナから、ポート番号に対応するソフトウェアを示すソフトウェア名を取得する。そしてコンピュータは、取得したソフトウェア名と、データテーブルに対するアクセスを許可する許可対象ソフトウェアを示す許可対象ソフトウェア名が設定された許可情報とに基づいて、アクセス要求に応じたデータテーブルへのアクセスの許否を決定する。【選択図】図8An object of the present invention is to restrict access to a database for each software type. Kind Code: A1 A computer sends an access request to a data table, which originates from a port number temporarily assigned to software running in a first container provided on a managed node, from the managed node. receive. The computer then acquires the software name indicating the software corresponding to the port number from the second container provided on the managed node. Then, the computer decides whether to permit access to the data table in response to the access request based on the obtained software name and permission information in which the permitted software name indicating the permitted software to be permitted to access the data table is set. decide. [Selection drawing] Fig. 8
Description
本発明は、アクセス制御方法、およびアクセス制御プログラムに関する。 The present invention relates to an access control method and an access control program.
アプリケーションソフトウェアなどの様々なソフトウェアを実行する動作環境では、各ソフトウェアからデータベース(DB:DataBase)内のデータへのアクセスを適切に制限することは非常に重要である。特に第三者から提供された秘密情報を扱う場合には、過失によって秘密情報を漏洩してしまうと大きな問題に発展する恐れがある。そのため、規定や規則によってこれを抑制するだけでなく、コンピュータシステム内でのアクセス制御機構によりアクセスを制限できることが求められる。 In an operating environment in which various types of software such as application software are executed, it is very important to appropriately restrict access from each software to data in a database (DB: DataBase). In particular, when dealing with confidential information provided by a third party, if the confidential information is leaked due to negligence, it may develop into a serious problem. Therefore, it is required not only to suppress this by regulations and rules, but also to be able to restrict access by an access control mechanism within the computer system.
なおアクセス制御の対象となるソフトウェアは、コンテナと呼ばれる仮想実行環境で実行される場合がある。ソフトウェアを実行するコンテナは、オーケストレーションツールと呼ばれる管理用ソフトウェアを用いて管理される。オーケストレーションツールにおいては、クラスタ内部のネットワーク機構を制御するためのソフトウェアが併用されることが多い。ネットワーク機構を制御するためのソフトウェアとしては、例えばサイドカープロキシと呼ばれる機構がある。代表的なものとしては、例えば、Envoyと呼ばれるOSS(Open Source Software)がある。 Software subject to access control may be executed in a virtual execution environment called a container. Containers that run software are managed using management software called orchestration tools. Orchestration tools often use software to control the network mechanism inside the cluster. As software for controlling the network mechanism, there is a mechanism called a sidecar proxy, for example. A typical example is OSS (Open Source Software) called Envoy.
サイドカープロキシでは、ソフトウェアのポート番号を用いて、ソフトウェアからDBへのアクセスの抑制などの制御を行うことができる。すなわちネットワークを介したDBへのアクセスの場合、各ソフトウェアには通信用のポート番号が割り振られる。ポート番号が固定的に決まっているソフトウェアであれば、アクセス要求のポート番号に基づいて、そのソフトウェアに関するDBへのアクセス制御を行うことができる。 The sidecar proxy can use the port number of software to perform control such as suppression of access from software to the DB. That is, in the case of accessing the DB via the network, each piece of software is assigned a communication port number. If the software has a fixed port number, it is possible to control access to the DB for that software based on the port number of the access request.
また、データ管理のソフトウェアである関係データベース管理システム(RDBMS:Relational DataBase Management System)においても、データへのアクセス制御の機構は存在する。RDBMSではユーザごとにアクセスの権限を設定し、その権限に従ってデータのアクセス可否を判断する。この権限はテーブル単位、行単位、列単位など、多数の粒度での設定が可能である。 Also in a relational database management system (RDBMS), which is data management software, there is a mechanism for controlling access to data. In the RDBMS, access authority is set for each user, and data access is determined according to the authority. This privilege can be set at many granularities, such as per table, per row, and per column.
コンテナを管理する技術としては、例えばコンテナ間で行われる通信の監視結果を用いて不正動作を検出できる監視システムが提案されている。 As a technique for managing containers, for example, a monitoring system has been proposed that can detect unauthorized behavior using the results of monitoring communications between containers.
コンテナ上で実行されているソフトウェアには、データ送信を行う際に、その時点で未使用のポート番号を用いて通信を行うソフトウェアが多数存在する。このように、ポート番号が通信の度に異なるソフトウェアがネットワーク経由でDBにアクセスする場合、従来技術では、ポート番号から、アクセス要求の送信元のソフトウェアの種別を判別することができない。そのため、ソフトウェアの種別ごとにDBへのアクセスを制限することが困難である。 Among the software running on the container, there is a large amount of software that communicates using port numbers that are not in use at the time of data transmission. In this way, when software with a different port number for each communication accesses the DB via the network, the conventional technology cannot determine the type of software that has sent the access request from the port number. Therefore, it is difficult to restrict access to the DB for each software type.
1つの側面では、本件は、ソフトウェアの種別ごとにDBへのアクセスを制限できるようにすることを目的とする。 In one aspect, the object of this case is to be able to restrict access to a DB for each software type.
1つの案では、コンピュータによる以下のようなアクセス制御方法が提供される。
コンピュータは、管理対象ノード上に設けられた第1コンテナで実行されているソフトウェアに一時的に割り当てられたポート番号を送信元とするデータテーブルへのアクセス要求を、管理対象ノードから受信すると、管理対象ノード上に設けられた第2コンテナから、ポート番号に対応するソフトウェアを示すソフトウェア名を取得する。そしてコンピュータは、取得したソフトウェア名と、データテーブルに対するアクセスを許可する許可対象ソフトウェアを示す許可対象ソフトウェア名が設定された許可情報とに基づいて、アクセス要求に応じたデータテーブルへのアクセスの許否を決定する。
In one proposal, the following access control method by computer is provided.
When the computer receives from the managed node an access request to the data table whose transmission source is the port number temporarily assigned to the software running in the first container provided on the managed node, the computer A software name indicating software corresponding to the port number is obtained from the second container provided on the target node. Then, the computer decides whether to permit access to the data table in response to the access request based on the obtained software name and permission information in which the permitted software name indicating the permitted software to be permitted to access the data table is set. decide.
1態様によれば、ソフトウェアの種別ごとにDBへのアクセスを制限できるようになる。 According to one aspect, access to the DB can be restricted for each software type.
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
Hereinafter, this embodiment will be described with reference to the drawings. It should be noted that each embodiment can be implemented by combining a plurality of embodiments within a consistent range.
[First Embodiment]
First, a first embodiment will be described.
図1は、第1の実施の形態に係るアクセス制御方法の一例を示す図である。図1には、アクセス制御方法を情報処理装置10によって実施した場合の例を示している。情報処理装置10は、例えばコンピュータであり、アクセス制御プログラムを実行することにより、アクセス制御方法を実施することができる。情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、情報処理装置10が有するメモリ、またはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサ、または演算回路である。
FIG. 1 is a diagram showing an example of an access control method according to the first embodiment. FIG. 1 shows an example in which an
情報処理装置10は、管理対象ノード1にネットワークを介して接続されている。管理対象ノード1は、情報処理装置10がアクセス制御を行うDB内のデータを使用するコンピュータである。管理対象ノード1には、複数のPod2a,2bが設けられている。Pod2aには、複数の第1コンテナ3a,3bが含まれる。Pod2bには、第2コンテナ4が含まれる。
The
Pod2a内の第1コンテナ3a,3bは、それぞれ情報処理装置10が管理するDB内のデータを利用するソフトウェア5a,5bを実行する。同一のPod2aに含まれる第1コンテナ3a,3bは、ネットワークを介した通信におけるアドレス(例えばIPアドレス)は共通である。またソフトウェア5a,5bそれぞれには固定的なポート番号は割り当てられておらず、ソフトウェア5a,5bの実行過程でネットワークを介した通信が発生すると、その都度、空いているポート番号が割り当てられる。ソフトウェア5aのソフトウェア名は「sw_1」である。ソフトウェア5bのソフトウェア名は「sw_2」である。
The
Pod2b内の第2コンテナ4は、監視ソフトウェア6を実行する。第2コンテナ4は、監視ソフトウェア6を実行することで、第1コンテナ3a,3bのネットワークを介した通信を監視する。例えば第2コンテナ4は、監視ソフトウェア6を実行することにより、ポート番号を使用して通信を行っているソフトウェアのソフトウェア名を取得することができる。Pod2a,2bが管理対象ノード1のオペレーティングシステム(OS:Operating System)とネットワークネームスペースを共有している場合、第2コンテナ4は、OSから、ポート番号に対応するソフトウェアを示すソフトウェア名を取得することができる。
A
記憶部11は、例えばDBを構成する複数のデータテーブル11a,11bを記憶する。データテーブル11aのデータテーブル名は「tbl_1」である。データテーブル11bのデータテーブル名は「tbl_2」である。
The
各データテーブル11a,11b内のデータは、用途が定められていることがある。用途が定められたデータを利用できるソフトウェアを、そのデータを定められた用途でのみ利用するソフトウェアに制限することができれば、そのデータが想定外の用途で使用されることを抑止できる。図1の例では、データテーブル11a内のデータは、いずれのソフトウェア5a,5bでも利用できるようにし、データテーブル11b内のデータはソフトウェア5bからのみ利用できるようにする場合を想定する。
Data in each of the data tables 11a and 11b may have a defined purpose. If it is possible to restrict software that can use data for which usage is specified to software that uses the data only for the specified usage, it is possible to prevent the data from being used for unexpected usage. In the example of FIG. 1, it is assumed that the data in the data table 11a can be used by both
処理部12は、ソフトウェア5a,5bの種別ごとのアクセス制御を行う。ソフトウェア5a,5bの種別は、ソフトウェア名で判別できる。
例えば処理部12は、第1コンテナ3a,3bで実行されているソフトウェア5a,5bに一時的に割り当てられたポート番号を送信元とするデータテーブル11a,11bへのアクセス要求7a~7dを、管理対象ノード1から受信する。アクセス要求7aは、第1コンテナ3aがソフトウェア5aを実行することで発生した、データテーブル11a内のデータへのアクセス要求である。アクセス要求7bは、第1コンテナ3aがソフトウェア5aを実行することで発生した、データテーブル11b内のデータへのアクセス要求である。アクセス要求7cは、第1コンテナ3bがソフトウェア5bを実行することで発生した、データテーブル11a内のデータへのアクセス要求である。アクセス要求7dは、第1コンテナ3bがソフトウェア5bを実行することで発生した、データテーブル11b内のデータへのアクセス要求である。
The
For example, the
処理部12は、いずれかのアクセス要求7a~7dを受信すると、管理対象ノード1上に設けられた第2コンテナ4から、受信したアクセス要求の送信元のポート番号に対応するソフトウェアを示すソフトウェア名を取得する。処理部12は、取得したソフトウェア名と許可情報12aとに基づいて、アクセス要求に応じたデータテーブルへのアクセスの許否を決定する。許可情報12aには、データテーブル11a,11bそれぞれに対するアクセスを許可する許可対象ソフトウェアを示す許可対象ソフトウェア名が設定されている。例えば処理部12は、第2コンテナ4から取得したソフトウェア名が、アクセス要求のアクセス先のデータテーブルに対応する許可対象ソフトウェア名のいずれかと一致する場合、アクセスを許可するものと決定する。また処理部12は、第2コンテナ4から取得したソフトウェア名が、アクセス要求のアクセス先のデータテーブルに対応する許可対象ソフトウェア名のいずれとも一致しない場合、アクセスを不許可にするものと決定する。
When the
処理部12は、アクセスを許可すると決定した場合、アクセス要求に応じたデータテーブルへのアクセスを実施する。また処理部12は、アクセスを不許可にすると決定した場合、アクセス要求に応じたデータテーブルへのアクセスを抑止する。
When the
例えば許可情報12aには、データテーブル11aへのアクセスを許可するソフトウェアの許可対象ソフトウェア名として、ソフトウェア5a,5bそれぞれのソフトウェア名「sw_1,sw_2」が設定されている。またデータテーブル11bへのアクセスを許可するソフトウェアの許可対象ソフトウェア名として、ソフトウェア5bのソフトウェア名「sw_2」のみが設定されている。この場合、アクセス要求7a,7c,7dに応じたアクセスは許可される。他方、ソフトウェア5aの実行により発生したデータテーブル11bへのアクセスは不許可となり、アクセスは拒否される。
For example, in the permission information 12a, software names "sw_1, sw_2" of the
このように処理部12は、第1コンテナ3a,3bと同じ管理対象ノード1内に実装されている第2コンテナ4からポート番号に対応するソフトウェア名を取得することで、一時的に割り当てられたポート番号を使用しているソフトウェアを認識できる。その結果、ポート番号を用いて、データテーブルに対するソフトウェアごとのアクセス制限を行うことができる。
In this way, the
なおPod2a,2bが管理対象ノード1のOSとネットワークネームスペースを共有している場合、第2コンテナ4は、ポート番号に対応するソフトウェア名をOSから容易に取得できる。これにより、ポート番号に対応するソフトウェア名の取得処理を効率的に行うことができる。
Note that when the
Pod2a,2bが管理対象ノード1のOSとネットワークネームスペースを共有していない場合もある。この場合、例えばPod2a内に第1コンテナ3a,3bとネットワークのアドレスを共有する第3コンテナが設けられる。第3コンテナは、ポート番号に対応するソフトウェア5a,5bの実行ファイルのファイルシステム内でのファイル識別番号を取得する。ファイル識別番号は、たとえばinode番号である。第2コンテナ4は、第3コンテナからファイル識別番号を取得し、OSから、ファイル識別番号に対応する実行ファイルのファイルパスを取得する。そして第2コンテナ4は、取得したファイルパスをソフトウェア名としてコンピュータに送信する。
管理対象ノード1のOSは、通常、1つのファイルシステムによってファイルを管理する。OS上で動作するPod2a,2bそれぞれが使用するファイルも、OSが有する共通のファイルシステムで管理される。ファイルシステムでは、各ファイルにファイル識別番号が付与されており、ファイル識別番号は管理対象ノード1内で一意である。そのため、ソフトウェアの実行ファイルのファイル識別番号が分かれば、該当ソフトウェアの実行ファイルのファイルパスを取得できる。ファイルパスには実行ファイルのファイル名が含まれており、そのファイル名は、対応するソフトウェアのソフトウェア名として使用できる。従ってポート番号に対応するソフトウェアのファイル識別番号を利用することで、Pod2a,2bが管理対象ノード1のOSとネットワークネームスペースを共有していない場合でも、ポート番号に対応するソフトウェア名の取得が可能となる。
The OS of the managed
DB内のデータテーブル11a,11bごとにアクセス制限を行うには、許可情報12aにおいてデータテーブルとソフトウェアの組ごとに、アクセスを許可するか否かを定義することとなる。例えば許可情報12aには、アクセス対象のデータテーブル11a,11bを示すアクセス対象データテーブル名と、アクセス対象のデータテーブルへのアクセスを許可する許可対象ソフトウェアを示す許可対象ソフトウェア名との組が、複数設定される。この場合、処理部12は、アクセス要求7a~7dに基づいて、アクセス対象のデータテーブル11a,11bを示すデータテーブル名を取得する。そして処理部12は、取得したデータテーブル名とソフトウェア名との組に対応するアクセス対象データテーブル名と許可対象ソフトウェア名との組が許可情報に設定されている場合、アクセスを許可すると決定する。
In order to restrict access to each of the data tables 11a and 11b in the DB, it is necessary to define whether or not access is permitted for each set of data table and software in the permission information 12a. For example, the permission information 12a includes a plurality of sets of access target data table names indicating the access target data tables 11a and 11b and permission target software names indicating permission target software permitted to access the access target data tables. set. In this case, the
アクセス要求7a~7dにはアクセス対象のデータテーブルのデータテーブル名が含まれている。従って、アクセス要求7a~7dからデータテーブル名を抽出することは可能である。ただし、アクセス要求7a~7dのデータフォーマットには様々な種類があり、処理部12においてすべてのアクセス要求7a~7dの内容を解析できるようにするのが難しい場合がある。その場合、処理部12は、データテーブルを管理しているDB管理システムから、アクセス要求7a~7dについての実行計画を取得してもよい。実行計画は、アクセス先のデータテーブルのデータテーブル名が明確に記載されている。そこで処理部12は、実行計画からアクセス要求に応じたアクセス先であるデータテーブルの名称を取得する。このようにアクセス要求7a~7dの実行計画からデータテーブル名を取得することで、アクセス要求7a~7dのデータフォーマットの仕様に依存せずに、確実にアクセス先のデータテーブル11a,11bのデータテーブル名を取得することができる。
The access requests 7a to 7d contain the data table name of the data table to be accessed. Therefore, it is possible to extract the data table name from the access requests 7a-7d. However, there are various types of data formats for the access requests 7a to 7d, and it may be difficult for the
処理部12は、アクセス要求7a~7dに応じたデータテーブルへのアクセスを、投機的に実行してもよい。その場合、処理部12は、ソフトウェア名の取得と並行して、アクセス要求7a~7dに応じたデータテーブル11a,11bへのアクセス処理を実行する。処理部12は、取得したソフトウェア名に基づいてアクセスを許可すると決定した場合、アクセス処理の結果をアクセス要求の送信元のソフトウェアに送信する。また処理部12は、取得したソフトウェア名に基づいてアクセスを許可しないと決定した場合、アクセス処理の結果のアクセス要求の送信元のソフトウェアへの送信を抑止する。このように並列で処理を行うことにより、ソフトウェアごとにアクセス制限による処理効率の低下を抑止することができる。
The
アクセス処理に時間を要する場合、処理部12は、アクセス処理の結果を取得する前にアクセスを許可しないと決定する可能性がある。この場合、処理部12は、アクセス処理をキャンセルしてもよい。例えば処理部12は、データテーブル11a,11bへのアクセスを行うDBシステムへ、アクセス処理のキャンセルを示すメッセージを送信する。これにより、投機的処理によって生じるアクセス処理の処理負荷の増加量を抑止することができる。
If the access process takes a long time, the
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態のシステムでは、アプリケーションソフトウェア(以下、アプリケーションと呼ぶ)ごとのDBへのアクセス管理を投機的に実行することで、アクセス管理に伴うDBのアクセス遅延を抑止する。
[Second embodiment]
Next, a second embodiment will be described. The system according to the second embodiment speculatively executes DB access management for each application software (hereinafter referred to as an application), thereby suppressing DB access delays associated with access management.
図2は、第2の実施の形態のシステム構成の一例を示す図である。第2の実施の形態では、ネットワーク20を介して2台のノード100,200,300が接続されている。ノード100は、コンテナを用いてアプリケーションからDBへのアクセスを管理する。ノード200は、コンテナを用いてアプリケーションを実行する。ノード300は、ノード100とノード200で実行されているコンテナを管理する。
FIG. 2 is a diagram showing an example of a system configuration according to the second embodiment. In the second embodiment, two
図3は、ノードのハードウェアの一例を示す図である。ノード100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
FIG. 3 is a diagram illustrating an example of node hardware. A
メモリ102は、ノード100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
Peripheral devices connected to the bus 109 include a
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
The
GPU104は画像処理を行う演算装置であり、グラフィックコントローラとも呼ばれる。GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
The
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
A keyboard 22 and a mouse 23 are connected to the
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
The
機器接続インタフェース107は、ノード100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
The
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。ネットワークインタフェース108は、例えばスイッチやルータなどの有線通信装置にケーブルで接続される有線通信インタフェースである。またネットワークインタフェース108は、基地局やアクセスポイントなどの無線通信装置に電波によって通信接続される無線通信インタフェースであってもよい。
ノード100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。ノード200,300も、図3に示したノード100と同様のハードウェアにより実現することができる。なお、第1の実施の形態に示した情報処理装置10も、図3に示したノード100と同様のハードウェアにより実現することができる。
The
ノード100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。ノード100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ノード100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またノード100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
The
ここで、第2の実施の形態によって実現しようとするアプリケーションごとのDBへのアクセス管理について説明する。
図4は、アプリケーションごとのDBへのアクセス管理の一例を示す図である。ノード100はDB110を有している。DB110内にRDBMSによって個人情報(住所、氏名)を含む機密情報が保持されている。RDBMSでは、データが複数のデータテーブルに分けて格納されている。各データテーブルには、そのデータテーブルごとに定められたデータ定義に合致するデータが格納される。RDBMSではデータテーブルは一つ以上存在し、それぞれのテーブルに依存関係がある場合もある。
Here, the access management to the DB for each application to be realized by the second embodiment will be described.
FIG. 4 is a diagram illustrating an example of DB access management for each application.
図4の例では、DB110内に登録者情報テーブル111と購入情報テーブル112とがある。登録者情報テーブル111には、登録者ID、登録者、年齢、都道府県の欄が設けられており、各欄に対応するデータを含む複数のレコードが登録されている。購入情報テーブル112には、購入ID、登録者ID、商品ID、および日時の欄が設けられており、各欄に対応するデータを含む複数のレコードが登録されている。登録者情報テーブル111と購入情報テーブル112とは、登録者IDを介して互いに関係付けられている。
In the example of FIG. 4, the
ノード200は、コンテナ211,212を用いてDB110へアクセスする。コンテナ211,212は、コンテナオーケストレーションツールで管理されているものとする。コンテナオーケストレーションツールでは、Pod単位でコンテナを管理する。コンテナ211,212は、ユーザアプリPod210に含まれている。
The
ユーザアプリPod210内のコンテナ211,212のように同一のPod内のコンテナは、共有のストレージアクセス環境・ネットワークアクセス環境を持ち、同じネットワーク名前空間を使用する。そのため、互いに簡単に通信が出来る。多くの場合、メインの動作を行うプログラムが入ったコンテナ一つに、それをサポートするヘルパープログラム(ログ収集、プロキシ、コントローラ、バックアップなど)を実行するコンテナがいくつか入ったものがPodとして使用される。このようなヘルパープログラムを実行するコンテナを、サイドカーコンテナと呼ぶ。
Containers within the same Pod, such as the
ノード200はユーザアプリPod210を有している。ユーザアプリPod210は、アプリケーションを実行させるための実行単位である。ユーザアプリPod210は、複数のコンテナ211,212を有する。コンテナ211では、アプリケーション211aが実行されている。コンテナ212では、アプリケーション212aが実行されている。
The
例えばアプリケーション212aは、DB110から読み出したデータの匿名化を行うアプリケーションであるものとする。登録者情報テーブル111には、ユーザの個人情報が含まれているため、登録者情報テーブル111から読み出したデータは、匿名化処理を行った後に利用するのが適切である。そこでノード100は、アプリケーション212aからのみ登録者情報テーブル111にアクセス可能となるように、アクセスを制御する。この場合、アプリケーション211aは、アプリケーション212aを介して、登録者情報テーブル111内のデータにアクセス可能となる。なお、購入情報テーブル112には個人情報が含まれていないため、ノード100は、両方のアプリケーション211a,212aから購入情報テーブル112へのアクセスが可能となるように制御する。
For example, the
このようにノード100は、テーブル単位で、アプリケーションごとに異なるアクセス制限を課すようにアクセス制御を行う。以下、図5、図6を参照して、アプリケーションごとに異なるアクセス制限を課すようなアクセス制御を行うことの困難性について説明する。
In this way, the
図5は、DBへのアクセス制御に関する参考技術の第1の例を示す図である。図5には、サイドカーコンテナを用いたコンテナオーケストレーションツールによって、DB110へのアクセスを制御する例が示されている。サイドカーコンテナとしてプロキシコンテナ900を挿入することで、プロキシコンテナ900を介した通信について、フィルタリングや統計情報の保存を行うことができる。例えばプロキシコンテナ900は、DB110へのアクセス要求の送信元のIP(Internet Protocol)アドレスとポート番号とに基づいてフィルタリングを行うことができる。送信元のIPアドレスとポート番号は、アクセス要求の送信に用いられたパケットのヘッダから取得できる。ただし図5に示すプロキシコンテナ900は、ポート番号に対応するアプリケーション211a,212aの識別情報(アプリケーション名など)を取得する機能を持たないものとする。
FIG. 5 is a diagram showing a first example of a reference technique regarding access control to a DB. FIG. 5 shows an example of controlling access to the
Pod単位でコンテナ211,212を管理している場合、Pod単位でIPアドレスが割り振られる。そのためプロキシコンテナ900を用いて送信元のIPアドレスとポート番号でフィルタリングを行う場合、IPアドレスだけでは同一のユーザアプリPod210内のアプリケーション211a,212aを識別することができない。送信元ポート番号は別々に振られているが、特別に送信元が設定しない限りは空いているポート番号が用いられている。すなわちアプリケーション211a,212aそれぞれが使用するポート番号は動的に変更され、プロキシコンテナ900においてアクセス要求のポート番号から、そのアクセス要求の送信元のアプリケーションの種別の判別は不可能である。
When the
またプロキシコンテナ900では、IPアドレスとポート番号だけではアクセス先となるデータテーブルを把握することができない。そのためプロキシコンテナ900によるDB110内のテーブルごとに、アプケーションに応じたアクセスの許否を判断するには、送信元のIPアドレスとポート番号に対応するアプリケーションの種別が把握できるだけでは不十分である。
Also, in the
図6は、DBへのアクセス制御に関する参考技術の第2の例を示す図である。図6には、RDBMSにおけるユーザ単位でのアクセス制御機能を用いて、アプリケーション単位でのアクセス制御を可能とする例が示されている。 FIG. 6 is a diagram showing a second example of a reference technique regarding access control to a DB. FIG. 6 shows an example of enabling access control on a per-application basis using the access control function on a per-user basis in RDBMS.
RDBMSは、テーブルごとに、そのテーブルに対するアクセスを許容するユーザを制限する機構を持っている。そこでPod作成者30は、アプリケーション211a,212aを、別々のユーザアカウントで実行する。例えばアプリケーション211aは「ユーザB」のユーザアカウントで実行され、アプリケーション212aは「ユーザA」のユーザアカウントで実行されている。
RDBMS has a mechanism for limiting users who are allowed to access each table. Therefore, the
RDBMSには、登録者情報テーブル111に設定されているデータ(登録者情報)にアクセス可能なユーザとして、「ユーザA」が設定される。また購入情報テーブル112に設定されているデータ(購入情報)にアクセス可能なユーザとして、「ユーザA、ユーザB」が設定される。このようにRDBMSには、各テーブルについて、ユーザ単位でのアクセス権限を定義することができる。そしてRDBMSは、アクセス可能なユーザのアカウントで実行されているアプリケーションからのアクセスであれば、データへのアクセスを許容する。 “User A” is set in the RDBMS as a user who can access data (registrant information) set in the registrant information table 111 . Also, “user A, user B” are set as users who can access data (purchase information) set in the purchase information table 112 . In this way, in the RDBMS, it is possible to define access rights for each table on a user-by-user basis. The RDBMS then allows access to the data from an application running under an accessible user's account.
図6の例では、「ユーザB」のアカウントで実行されているアプリケーション211aは、購入情報テーブル112へのアクセスは可能であるが、登録者情報テーブル111へのアクセスは不可能となる。他方、「ユーザA」のアカウントで実行されているアプリケーション212aは、登録者情報テーブル111と購入情報テーブル112との両方へアクセス可能である。このようにRDBMSにおけるユーザのアカウントのアクセス権限管理を用いれば、ユーザのアカウントとアプリケーションとを関連付けることで、アプリケーション単位でのアクセス制御が可能となる。
In the example of FIG. 6, the
しかし、RDBMSは、アクセスの要求元のアプリケーションのユーザアカウントを判別することはできても、これがどのアプリケーションに使われているかを把握することはできない。そのため、Pod作成者30が、RDBMSへのアプリケーションテーブルとユーザアカウントと関係付けの設定を誤った場合、アクセスを拒否するべきアプリケーションからのテーブルへのアクセスが許可されてしまう可能性がある。
However, although the RDBMS can determine the user account of the application requesting access, it cannot ascertain which application is using it. Therefore, if the
しかも複数のアプリケーション211a,212aそれぞれに個別のユーザアカウントを割り当てる場合、Pod作成者30一人が、アプリケーション211a,212aそれぞれを実行するための複数のユーザアカウントを管理することとなる。アプケーション数が多数になると、アプリケーションとユーザアカウントとの関連付けの設定ミスが発生しやすくなる。さらに、アプケーションの実行に使用するユーザアカウントがPod作成者30のアカウントに制限されることはシステムの運用の柔軟性を低下させることとなり、汎用的に用いることができる手段ではない。
Moreover, when individual user accounts are assigned to the
以上のように、プロキシによるIPアドレスとポート番号による制限ではアプリケーション単位での各テーブルへのアクセス許否の判別ができないという問題がある。他方、テーブルごとのアクセス制御はRDBMSのユーザをアプリケーションに紐づけでアクセス管理を行うのは、システムの運用や管理を難しくすることとなり不適切である。 As described above, there is a problem that it is not possible to determine whether access to each table is permitted or not for each application with restrictions based on IP addresses and port numbers by proxies. On the other hand, the access control for each table is not suitable for performing access management by linking RDBMS users to applications because it makes system operation and management difficult.
そこで第2の実施の形態に示すシステムでは、Pod作成者30への過度な負担をかけずに、アプリケーション単位でのアクセス制御を実現する。なお第2の実施の形態ではDB110をRDBMSで管理しているが、DB110の構造はRDBMSに限定されない。例えばNoSQLとよばれるドキュメントDB、グラフDBといった種類でアクセス制御されているDBに対しても、第2の実施の形態に示すアプリケーション単位でのアクセス制御を適用することができる。
Therefore, in the system shown in the second embodiment, access control is realized for each application without imposing an excessive burden on the
図7は、アプリケーション単位でのアクセス制御機能の一例を示すブロック図である。ノード100は、DB110とPod120とを有する。DB110は、RDBMSで管理される。DB110とPod120とは、ノード100のプロセッサ101がプログラムを実行することで実現される機能である。
FIG. 7 is a block diagram showing an example of an access control function for each application.
Pod120には、プロキシコンテナ121とDBコンテナ122とを有する。プロキシコンテナ121は、コンテナ間通信を途中でキャッチし、送信元のアプリケーションと通信の内容(クエリ)に基づいて、許可された通信かどうかを判断し、アクセス制御を行う。DBコンテナ122は、RDBMSによってDB110内のデータを管理する。
プロキシコンテナ121は、プロキシ部121a、アプリ情報取得部121b、許可情報取得部121c、接続先テーブル取得部121d、および許否判断部121eを有する。
The
プロキシ部121aは、アプリケーション211a,212aからのDB110へのアクセス要求であるクエリを取得する。プロキシ部121aは、取得したクエリをDBコンテナ122に転送し、アクセス可能なテーブルへのアクセスの場合に、アクセス結果をクエリの送信元のアプリケーションに送信する。
The
アプリ情報取得部121bは、ノード300内のAPI(Application Programming Interface)サーバ310から監視用コンテナ221の位置情報を取得する。そしてアプリ情報取得部121bは、クエリの送信元のポート番号に対応するアプリケーションの情報を監視用コンテナ221に問い合わせる。アプリ情報取得部121bは、取得したアプリケーションの情報を許否判断部121eに送信する。
The application information acquisition unit 121 b acquires the location information of the
許可情報取得部121cは、ノード300内のカスタムリソース320から、アクセスを許可するDB110内のテーブルとアプリケーションとの対応関係を示す許可情報を取得する。許可情報取得部121cは、取得した許可情報を許否判断部121eに送信する。
The permission
接続先テーブル取得部121dは、DBコンテナ122から、クエリに応じたアクセスの対象となるデータテーブルの名前(接続先テーブル名)を取得する。接続先テーブル取得部121dは、取得した接続先テーブル名を許否判断部121eに送信する。
The connection destination
許否判断部121eは、クエリの送信元のポート番号に対応するアプリケーションの情報、許可情報、および接続先テーブル名に基づいて、クエリに応じたアクセスを許可するか否かを判定する。許否判断部121eは、判定結果をプロキシ部121aに送信する。
The permission/
ノード200は、OS201上でコンテナエンジン202が実行され、コンテナエンジン202によってユーザアプリPod210と監視用Pod220とが生成されている。OS201、コンテナエンジン202、ユーザアプリPod210、および監視用Pod220は、ノード200のプロセッサがプログラムを実行することにより実現される機能である。なお、図7では省略しているが、ノード100においてもOS上で実行されているコンテナエンジンによってPod120が生成されている。
In the
監視用Pod220は、監視用コンテナ221を有している。監視用コンテナ221は、内部アプリ情報取得部221aを有する。内部アプリ情報取得部221aは、OS201を介して、特定のポート番号を使用しているアプリケーションのファイルパス(アプリケーションのプログラムファイルのディレクトリパスとファイル名)を取得する。例えば監視用コンテナ221はノード200のOS201と名前空間(namespace)を共有し、root権限(システム管理者用のシステム内のすべての操作が可能な権限)を持つよう設定される。監視用コンテナ221内の内部アプリ情報取得部221aは、名前空間を共有するアプリケーションについて、lsofコマンドを用いてポート番号とPID(プロセスID)の対応を調べる。lsofコマンドは、プロセスが開いているファイルのリストを取得するコマンドである。そして内部アプリ情報取得部221aは、アプリケーションのプログラムへのリンクが示されたファイル「/proc/[PID]/exe」にアクセスしてPIDに対応するアプリケーションのファイルパスを得ることができる。
The
ノード300は、APIサーバ310とカスタムリソース320とを有する。APIサーバ310とカスタムリソース320とは、ノード300のプロセッサがプログラムを実行することにより実現される機能である。
APIサーバ310は、コンテナオーケストレーションツールで提供されるAPIであり、各コンテナの位置(コンテナを実行してるノード)などの情報を管理する。カスタムリソース320は、コンテナオーケストレーションツールの拡張APIであり、Pod作成者が用意した任意の機能である。例えばカスタムリソース320は、データテーブルと、そのデータテーブルへのアクセスを許可するアプリケーションとの対応関係を示す許可情報を有する。そしてカスタムリソース320は、許可情報の取得要求に応じて、許可情報をプロキシコンテナ121に送信する。
The
なお、図7に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
図8は、DBへのアクセスの際の情報の流れを示す図である。例えばコンテナ212内のアプリケーション212aから、アプリケーションからのアクセスが許可されているテーブル内のデータを参照するクエリが出力されているものとする。出力されたクエリは、プロキシコンテナ121内のプロキシ部121aに送信される。プロキシ部121aは、アプリ情報取得部121bへクエリの送信元のIPアドレスとポート番号とを送信する。またプロキシ部121aは、接続先テーブル取得部121dにクエリを送信する。
The lines connecting the elements shown in FIG. 7 indicate part of the communication paths, and communication paths other than the illustrated communication paths can be set.
FIG. 8 is a diagram showing the flow of information when accessing a DB. For example, it is assumed that the
アプリ情報取得部121bは、APIサーバ310へ監視用コンテナ221の位置の問合せを送信する。APIサーバ310は、監視用コンテナ221の位置を示す位置情報をアプリ情報取得部121bに送信する。アプリ情報取得部121bは、監視用コンテナ221に、クエリの送信元のポート番号を送信する。監視用コンテナ221内の内部アプリ情報取得部221aは、OS201からポート番号に対応するアプリケーションのファイルパスを取得し、そのファイルパスをアプリ情報取得部121bに送信する。アプリ情報取得部121bは、取得したファイルパスを許否判断部121eに送信する。
The application information acquisition unit 121b transmits an inquiry about the location of the
許可情報取得部121cは、カスタムリソース320に許可情報の問合せを送信する。カスタムリソース320は、許可情報取得部121cに許可情報を送信する。許可情報取得部121cは、取得した許可情報を許否判断部121eに送信する。
The permission
接続先テーブル取得部121dは、プロキシ部121aから送られたクエリのExplainコマンドをDBコンテナ122に送信する。DBコンテナ122は、クエリの接続先テーブル名を含むExplain結果を接続先テーブル取得部121dに送信する。接続先テーブル取得部121dは、接続先テーブルを示す情報を許否判断部121eに送信する。
The connection destination
許否判断部121eは、ファイルパス、許可情報、接続先テーブル名に基づいて、クエリによるアクセスの許否を判断し、判断結果(許可または不許可)をプロキシ部121aに送信する。プロキシ部121aは、クエリをDBコンテナ122に送信する。DBコンテナ122は、RDBMSによりクエリに応じたDB110へのアクセスを行い、アクセス結果をプロキシ部121aに送信する。プロキシ部121aは、アクセスが許可と判断された場合、取得したアクセス結果をアプリケーション212aに送信する。
The permission/
図7、図8に示すようなアクセス制御機能によれば、プロキシコンテナ121によってDB110へのクエリが途中でキャッチされ、送信元のアプリケーションの通信の内容(クエリ)に基づいて、送信元のアプリケーションと接続先テーブルとが特定される。そして、特定されたアプリケーションから接続先テーブルへのアクセスを許可する許可情報が設定されていれば、クエリに基づくDB110へのアクセス結果が、クエリの送信元のアプリケーションに送信される。
According to the access control function as shown in FIGS. 7 and 8, the query to the
なお、クエリの送信元のアプリケーションのIPアドレスは変更される可能性がある。そこでプロキシコンテナ121は、クエリの送信元のノード200内の監視用コンテナ221を介してクエリに送信元のポート番号に対応するアプリケーションのファイルパスを取得する。これにより、送信元のアプリケーションを一意に特定することができる。
Note that the IP address of the application that sent the query may change. Therefore, the
図9は、アプリケーションのファイルパスの取得手順の一例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
[ステップS101]プロキシコンテナ121では、アプリ情報取得部121bがプロキシ部121aから、クエリの送信元のIPアドレスとポート番号を受信する。
FIG. 9 is a flow chart showing an example of a procedure for acquiring a file path of an application. The processing shown in FIG. 9 will be described below along with the step numbers.
[Step S101] In the
[ステップS102]アプリ情報取得部121bは、APIサーバ310から監視用Pod220の情報を取得する。例えばアプリ情報取得部121bは、APIサーバ310からAPIサーバ310で管理しているすべてのPodを示すPod一覧情報を取得する。アプリ情報取得部121bは、取得したPod一覧情報から、クエリの送信元と同じノードに設けられている監視用Pod220の情報を抽出する。抽出される情報には、監視用Pod220のIPアドレスが含まれる。
[Step S<b>102 ] The application information acquisition unit 121 b acquires information on the
図10は、Pod一覧情報の一例を示す図である。Pod一覧情報31には、例えばPodの名前(NAME)に対応付けて、PodのIPアドレス(IP)、Podを実行しているノードの名称(NODE)などが示されている。アプリ情報取得部121bは、クエリの送信元のIPアドレスとPod一覧情報31のIPの列とを照合して、IPアドレスが一致するレコードを特定する。Pod一覧情報31は、特定したレコードのNODE列の値(ノードの名称)を参照することで、クエリの送信元のアプリケーションを含むPodがどのノードで動作しているのかを認識する。すなわち、ポート番号に対応するファイルパスの問合せ先の監視用Podが、どのノードの監視用Podなのかが判明する。
FIG. 10 is a diagram illustrating an example of Pod list information. The
Pod一覧情報31に示されているPodの名前は、例えば「-」の左側が任意に指定する名前であり、「-」の右側はシステムにより自動で付与されるハッシュ値である。そこで監視用Podの任意に設定できる名前を例えば「checkapp」と統一しておけば、アプリ情報取得部121bは、NAMEの列の値に基づいて、各ノード内のPodのうち、どのPodが監視用Podなのかを判断できる。アプリ情報取得部121bは、特定したレコードのNAMME列とNODE列の情報から目的の監視用コンテナ221を含む監視用Pod220を特定する。
The Pod name shown in the
以下、図9の説明に戻る。
[ステップS103]アプリ情報取得部121bは、監視用コンテナ221に送信元のポート番号を送信する。
Hereinafter, the explanation will return to FIG.
[Step S<b>103 ] The application information acquisition unit 121 b transmits the source port number to the
[ステップS104]監視用コンテナ221では、内部アプリ情報取得部221aがポート番号に対応するPIDをOS201から取得する。例えば内部アプリ情報取得部221aは、lsofコマンドをOS201に実行させ、アプリ情報取得部121bから取得したポート番号で実行中のプロセスのPIDを取得する。
[Step S<b>104 ] In the
[ステップS105]内部アプリ情報取得部221aは、PIDに対応するプログラムのファイルパスを取得する。例えば内部アプリ情報取得部221aは、プロキシコンテナ121にファイル「/proc/[PID]/exe」([PID]はステップS104で取得したPID)にアクセスし、ファイル内の情報を取得する。このファイルは、PIDに対応する実行ファイルへのシンボリックリンクであり、該当ファイルのファイルパスが含まれている。
[Step S105] The internal application
[ステップS106]内部アプリ情報取得部221aは、プロキシコンテナ121に、指定されたポート番号に対応するアプリケーションのファイルパスを送信する。
このようにして、ポート番号に対応するアプリケーションのファイルパスを取得することができる。これにより、アプリケーションからクエリが送信されるごとにポート番号が異なっていても、プロキシコンテナ121においてクエリの送信元のアプリケーションを正しく認識できる。
[Step S<b>106 ] The internal application
In this way, the file path of the application corresponding to the port number can be obtained. As a result, even if the port number differs each time a query is sent from an application, the
テーブルへのアプリケーションごとのアクセス制御を行うため、プロキシコンテナ121は、クエリの送信元のアプリケーションの把握に加え、アクセスのために接続する接続先テーブル名を取得する。
In order to control access to a table for each application, the
なお、メッセージ内のクエリから正確な情報を取り出すためには、パーサを用いてクエリを解析することとなる。しかし、クエリにはDBごとに様々な方言があり、これらすべてのDBに応じたパーサをプロキシコンテナ121に実装するのは困難であり、拡張性を妨げる可能性もある。
Note that a parser is used to analyze the query in order to extract the correct information from the query in the message. However, queries have various dialects for each DB, and it is difficult to implement a parser corresponding to all these DBs in the
そこでプロキシコンテナ121は、クエリに対するExplainコマンドという比較的解析が簡単な情報を用いてアクセス先のテーブルを取得する。クエリに対するExplain構文は基本的に後付けが容易なため、クエリを解析せずにすむ。また、Explain結果はyamlやJSON(JavaScript Object Notation)などの半構造データで返すことが可能なRDBMSが多く、Explainコマンドを用いれば容易に接続先テーブル名を抽出できる。
Therefore, the
図11は、接続先テーブル名の取得方法の一例を示す図である。アプリケーション212aからクエリ41がプロキシコンテナ121に送信されると、プロキシコンテナ121内の接続先テーブル取得部121dは、クエリ41の内容を含むExplainコマンド42を生成する。Explainコマンド42は、命令文「Explain」に続けて、クエリ41の内容を記載したものである。接続先テーブル取得部121dは、生成したExplainコマンド42をDBコンテナ122に送信する。
FIG. 11 is a diagram illustrating an example of a method of acquiring a connection destination table name. When the
DBコンテナ122は、Explainコマンド42を受信すると、Explainコマンド42内に示されるクエリ41の実行計画を生成する。そしてDBコンテナ122は、実行計画をExplain結果43としてプロキシコンテナ121に送信する。
Upon receiving the explain
図11に示されているのはPostgreSQLでのExplain結果43である。このExplain結果43には、接続先テーブルの名称「”Relation Name”:”t”,」が含まれている。プロキシコンテナ121は、Explain結果43から、接続先テーブルの名称の記述を、接続先テーブル名として抽出する。
Shown in FIG. 11 is the explain
このようにプロキシコンテナ121は、Explainのコマンド文字列に、クエリ41の内容を追加するだけでExplainコマンド42を生成できる。すなわちクエリそのものを解析する場合は文字列を解釈しなければならないが、Explainコマンド42でJSON形式の実行計画をExplain結果43として取得できる。JSON形式の実行計画は、既存のJSONライブラリにより解析できる。そこでプロキシコンテナ121は、JSONライブラリを用いて、Explain結果43における「Plan」内の「Relation Name」の値を読み込む。読み込んだ値が、接続先テーブルの名称である。このようにExplainコマンド42を用いることで、接続先テーブルを容易に判断できる。
In this manner, the
Explainコマンド42による実行計画の出力機能は多くのDBに実装されており、NoSQLであるMongoDBや、グラフDBのNeo4jなども例外ではない。すなわち、Explainコマンド42を用いた接続先テーブルの判定はRDBMSに限らず、その他の様々なDBでも同様に可能である。
The execution plan output function by the explain
接続先テーブルに対してアクセスを許可するアプリケーションの種別を示す許可情報は、Pod作成者30によってカスタムリソース320に予め定義される。プロキシコンテナ121は、カスタムリソース320から許可情報を取得することで、接続先テーブルへのアクセスが許可されているアプリケーションを認識できる。
Permission information indicating the type of application permitted to access the connection destination table is predefined in the
図12は、カスタムリソースから取得する許可情報の一例を示す図である。例えばプロキシコンテナ121は、カスタムリソース320から、すべてのデータテーブルについての許可情報51,52,・・・を取得する。許可情報51,52,・・・は、アクセス制限をかけるRDB1つに対して1つ作成される。許可情報51,52,・・・には、RDBのサービス名、RDBのポート番号、許可するアプリケーションのファイルパス、許可するテーブル名などが含まれる。
FIG. 12 is a diagram illustrating an example of permission information acquired from custom resources. For example, the
プロキシコンテナ121は、クエリ41の送信元のアプリケーションのファイルパスと接続先テーブルの名前との組を、許可情報51,52,・・・と照合することで、アクセスの許否を判断する。
The
なお、監視用コンテナ221との通信や、テーブル取得のためのExplainコマンド42の実行は、DBへのアクセス処理において無視できないオーバーヘッドとなる可能性がある。そこでプロキシコンテナ121は通信の投機的実行を行う。
Note that communication with the
図13は、投機的なDBアクセス処理の一例を示すシーケンス図である。プロキシコンテナ121は、DBへのクエリを受信すると、アプリケーションのファイルパスの取得処理、接続先テーブル名の取得処理、許可情報の取得処理、およびDB110に対するクエリの実行処理を並列に行う。
FIG. 13 is a sequence diagram illustrating an example of speculative DB access processing. Upon receiving a query to the DB, the
アプリケーションのファイルパスの取得処理は、4つのステップS11~S14に分かれている。まずプロキシコンテナ121は、APIサーバ310に監視用コンテナ221の位置の問合せを送信する(ステップS11)。APIサーバ310は、問合せ結果として、例えばPod一覧情報をプロキシコンテナ121に送信する(ステップS12)。プロキシコンテナ121は、問合せ結果に基づいて監視用コンテナ221の位置を認識し、監視用コンテナ221にクエリの送信元のポート番号に対応するアプリケーションを問い合わせる(ステップS13)。監視用コンテナ221は、アプリケーションのファイルパスをプロキシコンテナ121に送信する(ステップS14)。以上が、アプリケーションのファイルパスの取得処理である。
The application file path acquisition process is divided into four steps S11 to S14. First, the
接続先テーブル名の取得処理は、2つのステップS21~S22に分かれている。まずプロキシコンテナ121は、DBコンテナ122に、クエリの内容を含むExplainコマンドを送信する(ステップS21)。DBコンテナ122は、Explainコマンドに応じて、クエリの実行計画(接続先テーブル名を含む)を示すExplain結果をプロキシコンテナ121に送信する(ステップS22)。以上が、接続先テーブル名の取得処理である。
The connection destination table name acquisition process is divided into two steps S21 and S22. First, the
許可情報の取得処理は、2つのステップS31~S32に分かれている。まずプロキシコンテナ121は、カスタムリソース320に許可情報を要求する(ステップS31)。カスタムリソース320は、DB110内のすべてのデータテーブルに関する許可情報群をプロキシコンテナ121に送信する(ステップS32)。以上が、許可情報の取得処理である。
Permission information acquisition processing is divided into two steps S31 and S32. First, the
クエリの実行処理は、2つのステップS41~S42に分かれている。まずプロキシコンテナ121は、DBコンテナ122に対してクエリを送信することで、クエリの実行を要求する(ステップS41)。DBコンテナ122は、クエリのアクセス先のデータテーブルへの接続を行い、該当データテーブルに対してクエリに応じた処理を実行し、実行結果をプロキシコンテナ121に送信する(ステップS42)。クエリがデータの参照を要求していれば、実行結果にはクエリに応じたデータが含まれる。クエリがDB110内でのデータの操作(更新、削除など)を要求していれば、操作処理の成否を示す情報が実行結果に含まれる。以上が、クエリの実行処理である。
The query execution process is divided into two steps S41 and S42. First, the
プロキシコンテナ121は、アプリケーションのファイルパスの取得処理、接続先テーブル名の取得処理、および許可情報の取得処理が完了すると、アクセスの許否を判断する。プロキシコンテナ121は、アクセスの許否の判断の前にクエリの実行結果を受信した場合、アクセスの許否が判断できるようになるまでアプリケーションへの応答を待機する。そしてプロキシコンテナ121は、クエリに基づく接続先テーブルへのアクセスが許可されたアクセスであると判断できた場合、クエリの実行結果を、クエリの送信元のアプリケーションに送信する(ステップS51)。またプロキシコンテナ121は、クエリに基づく接続先テーブルへのアクセスが許可されていないアクセスであると判断した場合、権限エラーを示すメッセージを、クエリの送信元のアプリケーションに送信する(ステップS52)。
The
図13に示した例は、クエリが短時間で実行できた場合を想定したものである。クエリの実行に長時間を要する場合、クエリの実行が終了するよりも先にアクセスの許否の判断結果が得られる場合がある。この場合において、アクセスが不許可であれば、クエリの実行を中止することで、無駄な処理の発生を最小限に抑えることができる。 The example shown in FIG. 13 assumes that the query can be executed in a short time. If it takes a long time to execute a query, the access permission/denial decision may be obtained before the execution of the query is completed. In this case, if the access is not permitted, it is possible to minimize the occurrence of wasteful processing by canceling query execution.
図14は、クエリの実行に時間がかかる場合の投機的なDBアクセス処理の一例を示すシーケンス図である。アプリケーションのファイルパスの取得処理、接続先テーブル名の取得処理、許可情報の取得処理、およびDB110に対するクエリの実行処理を並列に行う点は、図13と同様である。またアプリケーションのファイルパスの取得処理、接続先テーブル名の取得処理、および許可情報の取得処理の内容も図13と同様である。クエリの実行処理については、クエリの実行の要求(ステップS41)までは、図13と同様である。
FIG. 14 is a sequence diagram illustrating an example of speculative DB access processing when query execution takes a long time. Similar to FIG. 13, the application file path acquisition process, the connection destination table name acquisition process, the permission information acquisition process, and the query execution process for the
プロキシコンテナ121は、クエリの実行が終了するよりも先に許可されたアクセスであると判断した場合、DBコンテナ122からの実行結果の受信を待つ。その後、DBコンテナ122は、クエリの実行が終了すると実行結果をプロキシコンテナ121に送信する(ステップS43)。そしてプロキシコンテナ121は、クエリの実行結果を、クエリの送信元のアプリケーションに送信する(ステップS53)。
If the
他方、プロキシコンテナ121は、クエリの実行が終了するよりも先に不許可のアクセスであると判断した場合、クエリの実行終了を待たずに、DBコンテナ122に対してクエリの実行のキャンセルを示すメッセージを送信する(ステップS44)。そしてプロキシコンテナ121は、権限エラーを示すメッセージを、クエリの送信元のアプリケーションに送信する(ステップS54)。
On the other hand, if the
このような処理を行うことにより、本来の通信処理に加わるオーバーヘッドを最小限にしつつ、アプリケーションごとのアクセス制御を実現することが可能となる。
以上のように、第2の実施の形態のシステムでは、プロキシコンテナ121は、クエリの送信元の情報に基づいてPIDやアプリケーションのファイルパスまで調査し、RDBMSへの問合せを用いて接続先テーブル名を入手する。これにより「IPアドレスとポート番号による制限ではアプリケーション単位の切り分けや送信先テーブルの判別ができない」という第1の課題が解決される。さらにプロキシコンテナ121は、ユーザとデータテーブルの対応関係ではなく、アプリケーションとデータテーブルの対応関係を示す許可情報を直接チェックする。これにより、「テーブルごとのアクセス制御はRDBMSのユーザをアプリケーションに紐づけるだけでは十分でない」という第2の課題も解決される。
By performing such processing, it is possible to implement access control for each application while minimizing the overhead added to the original communication processing.
As described above, in the system of the second embodiment, the
〔第3の実施の形態〕
第3の実施の形態は、ノード200においてOS201と他のPodとのネームスペースの共有化が図られていない場合においても、ポート番号に対応するアプリケーションを特定できるようにしたものである。以下、第3の実施の形態における第2の実施の形態との相違点について説明する。
[Third Embodiment]
The third embodiment makes it possible to specify an application corresponding to a port number even when the
第2の実施の形態では、ノード200内のPodのIPアドレス、ポート番号のネームスペース(ネットワークネームスペース)がOS201のネームスペースと一致していることが前提となっている。この前提が満たされれば、送信元ポート番号をOS201のポート番号一覧と照合する(lsofコマンドによる検索)ことでPIDを辿ることができ、第2の実施の形態で示した手順でのアクセス制御が可能となる。
In the second embodiment, it is assumed that the namespace (network namespace) of the Pod IP address and port number in the
ネットワークネームスペースが一致しているという前提を満たすために、Pod作成者30は、コンテナ作成時のオプションにおいて、ネットワークネームスペースをOS201と共有するというオプションを使う。例えばkubernetesの場合では、Pod(機能別にまとまったコンテナ群)を作成するときに「HostNetwork」というオプションをつけることで、ネットワークネームスペースを一致させることが可能である。ただしネットワークネームスペースの共有は、セキュリティリスクを高めてしまうため、この設定ができない場合がある。
In order to satisfy the premise that the network namespaces match, the
第2の実施の形態では監視用コンテナ221がポート番号からアプリを特定するが、これはユーザアプリPod210とOS201のネットワークネームスペースが一致していないと成立しない。何故なら送信元のアプリケーションのポート番号はユーザアプリPod210内のネットワークネームスペースのみで利用されるポート番号であり、ホストOSであるOS201のネットワークネームスペースから見ることができないためである。
In the second embodiment, the
そこで第3の実施の形態では、ユーザアプリPod210内に情報取得用コンテナを追加し、情報取得用のコンテナを介して、ポート番号に対応するアプリケーションのファイルパスの取得を可能とする。
Therefore, in the third embodiment, an information acquisition container is added in the
図15は、第3の実施の形態におけるアプリケーション単位でのアクセス制御機能の一例を示すブロック図である。第3の実施の形態では、ユーザアプリPod210内に情報取得コンテナ213が追加されている点が第2の実施の形態と異なる。またポート番号に対応するアプリケーションのファイルパスの取得処理以外の処理は、第2の実施の形態と同様である。以下、第3の実施の形態におけるポート番号に対応するアプリケーションのファイルパスの取得処理について説明する。
FIG. 15 is a block diagram showing an example of an access control function for each application according to the third embodiment. The third embodiment differs from the second embodiment in that an
プロキシコンテナ121は、アプリケーション212aからクエリを取得すると、クエリを含むパケットからIPアドレスとポート番号を取得する。そしてプロキシコンテナ121は、取得したIPアドレスを有するユーザアプリPod210内の情報取得コンテナ213に対して、クエリの送信元のポート番号に対応するアプリケーション問合せを送信する。なお情報取得コンテナ213のパケット受信用のポート番号は固定的に決めてあり、プロキシコンテナ121には、情報取得コンテナ213のパケット受信用のポート番号が予め登録されている。
When the
情報取得コンテナ213は、アプリケーション問合せで指定されたポート番号に基づいて、そのポート番号に対応するinode番号を取得する。inode番号は、ファイルシステムで管理されているファイル、ディレクトリそれぞれに関する情報(inode)の識別番号である。ポート番号には、そのポート番号を用いた通信に使用するファイル(例えば受信データのバッファ)が存在し、そのファイルにinode番号が付与されている。inode番号はネームスペースに関わらずノード200内で一意である。
Based on the port number specified by the application inquiry, the
情報取得コンテナ213は、監視用コンテナ221内の内部アプリ情報取得部221aに、inodeに対応するアプリケーションの問合せを行う。内部アプリ情報取得部221aは、指定されたinode番号を/procディレクトリ内で検索し、inode番号とアプリケーションのファイルパスとの対応関係を取得する。内部アプリ情報取得部221aは、取得したアプリケーションのファイルパスを情報取得コンテナ213に送信する。情報取得コンテナ213は、受信したアプリケーションのファイルパスをプロキシコンテナ121に送信する。
The
このようにしてプロキシコンテナ121は、ノード200内のPodとOS201とのネットワークネームスペースの共有化が図られていない場合であっても、ポート番号に対応するアプリケーションのファイルパスを取得することができる。
In this way, the
また図15の例では、情報取得コンテナ213のデータ受信用のポート番号はあらかじめ決められている。そのため、プロキシコンテナ121は、APIサーバに問合せに行かずに、情報取得コンテナ213との通信を確立できる。また情報取得コンテナ213は、同じホスト内での接続に使われる通信形式であるUNIX(登録商標)ドメインソケットを使って、同じノード200内の監視用コンテナ221へのアクセスが可能である。以上より、APIサーバへの通信は不要となる。
Also, in the example of FIG. 15, the port number for data reception of the
〔その他の実施の形態〕
第2の実施の形態では、クエリを受信するごとに、監視用コンテナ221の位置問い合わせを行っているが、監視用コンテナ221の位置を一度取得したら、Pod一覧情報31をキャッシュとして保持しておいてもよい。これにより、以降のクエリの受信時には、APIサーバ310への監視用コンテナ221の位置の問合せを省略することができる。
[Other embodiments]
In the second embodiment, an inquiry about the location of the
また第2の実施の形態では、クエリを受信するごとに、許可情報の取得処理を行っているが、許可情報を一度取得したら、許可情報をキャッシュとして保持しておいてもよい。これにより、以降のクエリの受信時には、カスタムリソース320からの許可情報の取得処理を省略することができる。
In addition, in the second embodiment, the permission information acquisition process is performed each time a query is received, but once the permission information is acquired, the permission information may be held as a cache. As a result, when subsequent queries are received, the process of obtaining permission information from the
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。 Although the embodiment has been illustrated above, the configuration of each unit shown in the embodiment can be replaced with another one having the same function. Also, any other components or steps may be added. Furthermore, any two or more configurations (features) of the above-described embodiments may be combined.
1 管理対象ノード
2a,2b Pod
3a,3b 第1コンテナ
4 第2コンテナ
5a,5b ソフトウェア
6 監視ソフトウェア
7a~7d アクセス要求
10 情報処理装置
11 記憶部
11a,11b データテーブル
12 処理部
12a 許可情報
1 managed
3a, 3b
Claims (8)
管理対象ノード上に設けられた第1コンテナで実行されているソフトウェアに一時的に割り当てられたポート番号を送信元とするデータテーブルへのアクセス要求を、前記管理対象ノードから受信すると、前記管理対象ノード上に設けられた第2コンテナから、前記ポート番号に対応する前記ソフトウェアを示すソフトウェア名を取得し、
取得した前記ソフトウェア名と、前記データテーブルに対するアクセスを許可する許可対象ソフトウェアを示す許可対象ソフトウェア名が設定された許可情報とに基づいて、前記アクセス要求に応じた前記データテーブルへのアクセスの許否を決定する、
アクセス制御方法。 the computer
When a data table access request originating from a port number temporarily assigned to software running in a first container provided on a managed node is received from the managed node, Acquiring a software name indicating the software corresponding to the port number from a second container provided on the node;
Permission or denial of access to the data table in response to the access request is determined based on the obtained software name and permission information in which the permitted software name indicating the permitted software to be permitted to access the data table is set. decide,
Access control method.
請求項1記載のアクセス制御方法。 The second container acquires the software name indicating the software corresponding to the port number from the operating system of the managed node, and transmits the acquired software name to the computer.
The access control method according to claim 1.
前記第2コンテナは、前記第3コンテナから前記ファイル識別番号を取得し、オペレーティングシステムから、前記ファイル識別番号に対応する前記実行ファイルのファイルパスを取得し、取得した前記ファイルパスを前記ソフトウェア名として前記コンピュータに送信する、
請求項1または2に記載のアクセス制御方法。 A third container sharing a network address with the first container obtains a file identification number within a file system of the software executable file corresponding to the port number;
The second container obtains the file identification number from the third container, obtains the file path of the executable file corresponding to the file identification number from the operating system, and uses the obtained file path as the software name. transmit to said computer;
3. The access control method according to claim 1 or 2.
前記許可情報には、データベースに含まれるアクセス対象データテーブルを示すアクセス対象データテーブル名と、前記アクセス対象データテーブルへのアクセスを許可する許可対象ソフトウェアを示す前記許可対象ソフトウェア名との組が設定されており、
アクセスの許否の決定では、取得した前記データテーブル名と前記ソフトウェア名との組に対応する前記アクセス対象データテーブル名と前記許可対象ソフトウェア名との組が前記許可情報に設定されている場合、アクセスを許可すると決定する、
請求項1ないし3のいずれかに記載のアクセス制御方法。 obtaining a data table name indicating the data table to be accessed based on the access request;
The permission information includes a set of an access target data table name indicating an access target data table contained in a database and the permission target software name indicating permission target software permitted to access the access target data table. and
In determining whether or not to permit access, if a set of the access target data table name and the permission target software name corresponding to the acquired set of the data table name and the software name is set in the permission information, access is permitted. decide to allow
4. The access control method according to any one of claims 1 to 3.
請求項4記載のアクセス制御方法。 Acquiring the data table name includes acquiring an execution plan for the access request from a database management system managing the data table, and acquiring the data table name from the execution plan.
5. The access control method according to claim 4.
取得した前記ソフトウェア名に基づいてアクセスを許可すると決定した場合、前記アクセス処理の結果を前記アクセス要求の送信元の前記ソフトウェアに送信し、
取得した前記ソフトウェア名に基づいてアクセスを許可しないと決定した場合、前記アクセス処理の結果の前記アクセス要求の送信元の前記ソフトウェアへの送信を抑止する、
請求項1ないし5のいずれかに記載のアクセス制御方法。 In parallel with acquiring the software name, executing access processing to the data table according to the access request,
if it is determined to permit access based on the acquired software name, sending the result of the access processing to the software that sent the access request;
when it is determined that access is not permitted based on the obtained software name, suppressing transmission of the result of the access process to the software that is the source of the access request;
6. The access control method according to any one of claims 1 to 5.
請求項6記載のアクセス制御方法。 canceling the access process if it is determined that the access is not permitted before obtaining the result of the access process;
7. The access control method according to claim 6.
管理対象ノード上に設けられた第1コンテナで実行されているソフトウェアに一時的に割り当てられたポート番号を送信元とするデータテーブルへのアクセス要求を、前記管理対象ノードから受信すると、前記管理対象ノード上に設けられた第2コンテナから、前記ポート番号に対応する前記ソフトウェアを示すソフトウェア名を取得し、
取得した前記ソフトウェア名と、前記データテーブルに対するアクセスを許可する許可対象ソフトウェアを示す許可対象ソフトウェア名が設定された許可情報とに基づいて、前記アクセス要求に応じた前記データテーブルへのアクセスの許否を決定する、
処理を実行させるアクセス制御プログラム。 to the computer,
When a data table access request originating from a port number temporarily assigned to software running in a first container provided on a managed node is received from the managed node, Acquiring a software name indicating the software corresponding to the port number from a second container provided on the node;
Permission or denial of access to the data table in response to the access request is determined based on the obtained software name and permission information in which the permitted software name indicating the permitted software to be permitted to access the data table is set. decide,
The access control program that causes the action to take place.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2021049734A JP2022148161A (en) | 2021-03-24 | 2021-03-24 | Access control method and access control program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2021049734A JP2022148161A (en) | 2021-03-24 | 2021-03-24 | Access control method and access control program |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2022148161A true JP2022148161A (en) | 2022-10-06 |
Family
ID=83463488
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2021049734A Pending JP2022148161A (en) | 2021-03-24 | 2021-03-24 | Access control method and access control program |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2022148161A (en) |
-
2021
- 2021-03-24 JP JP2021049734A patent/JP2022148161A/en active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8498995B1 (en) | Optimizing data retrieval during event data query processing | |
| US9697379B2 (en) | Database virtualization | |
| CN104252501B (en) | A kind of computing device and method executing database manipulation order | |
| US11138311B2 (en) | Distributed security introspection | |
| US12488048B2 (en) | Accessing data using a user-defined function (UDF) | |
| US12438824B2 (en) | Protecting integration between resources of different services using service-generated dependency tags | |
| US10205679B2 (en) | Resource object resolution management | |
| CN103971059B (en) | Cookie local storage and usage method | |
| US8380806B2 (en) | System and method for absolute path discovery by a storage virtualization system | |
| US20240012819A1 (en) | PROCESSING EXTERNAL FUNCTIONS USING USER-DEFINED FUNCTIONS (UDFs) | |
| CN115935328A (en) | Resource access control method, device, equipment and storage medium | |
| US20230281332A1 (en) | Access control method, access control program, and information processing apparatus | |
| JP2022148161A (en) | Access control method and access control program | |
| CN112528339A (en) | Data desensitization method based on Cach é database and electronic equipment | |
| US12489797B2 (en) | Systems, methods, and devices for improved security policy distribution in a cloud-computing environment | |
| KR101318234B1 (en) | Data cache method and device for database system | |
| WO2020153053A1 (en) | Database management service providing system | |
| JP6607044B2 (en) | Server device, distributed file system, distributed file system control method, and program | |
| CN116860862B (en) | Front-end caching method of low-code platform and related equipment | |
| US20250094418A1 (en) | Dynamic pivot implementation using object aggregation | |
| JP4492569B2 (en) | File operation control device, file operation control system, file operation control method, and file operation control program |