以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のアクセス制御装置について説明し、その後、実施の形態をより具体的に説明する。
<第1の実施の形態>
図1は、第1の実施の形態のアクセス制御装置の概要を示す図である。
第1の実施の形態のアクセス制御装置(コンピュータ)1は、クライアント装置2の、サーバ装置群3が有する複数のサーバ装置に対するアクセスを制御する。サーバ装置群3が有するサーバ装置3a、サーバ装置3b、サーバ装置3cは、それぞれ異なる処理を実行するサーバである。サーバは、それぞれ異なるアドレス(IPアドレスとポート番号の組み合わせ)を有している。
図1では、サーバ装置3aのアドレスは「アドレスA」である。サーバ装置3bのアドレスは「アドレスB」である。サーバ装置3cのアドレスは「アドレスC」である。
図1では、アクセス制御装置1は、サーバ装置群3の前段に設けられた情報処理装置4のポートの開閉を制御する。
ここで、このクライアント装置2としては、サーバ装置群3に対し処理を要求する装置であれば、特に限定されず、例えば、ユーザが操作する端末装置や、ユーザの要求に応じて処理を行うアプリケーションを有するアプリケーションサーバ等が挙げられる。図1では一例として、ユーザが操作するクライアント装置2を図示している。
図1に示すクライアント装置2には、例えば、クライアント装置2の要求に応じてサーバ装置3aが所定の処理(例えば、後述するトークンの発行処理や、認証処理等)を実行し、応答した情報処理装置4へのアクセスのために動的に決定されたポート番号「D」が通知されている。このポート番号「D」は、サーバ装置3aが生成してもよいし、アクセス制御装置1が生成してサーバ装置3aに送信してもよい。
クライアント装置2が、このポート番号「D」のポートにアクセスすることにより、サーバ装置3a、サーバ装置3b、サーバ装置3cのいずれかのサーバが、次の処理を実行する。
情報処理装置4は、サーバ装置3a、サーバ装置3b、サーバ装置3cの処理を妨害するDoS攻撃を抑制する等の目的で設けられている。
アクセス制御装置1は、情報処理装置4が開放するポートを動的に変更することで、サーバ装置群3に対するDoS攻撃を抑制する。
アクセス制御装置1は、受信手段1aと、生成手段1bと、送信手段1cとを有している。
受信手段1aは、サーバ装置3a、サーバ装置3b、サーバ装置3cのいずれかから、情報処理装置4のポートの開放要求を受信する。
この開放要求は、クライアント装置2に送信したポート番号のポートを、情報処理装置4に開放させる要求である。
なお、サーバ装置3a、サーバ装置3b、サーバ装置3cが開放要求を送信するタイミングは特に限定されない。図1では、一例として、サーバ装置(第1サーバ装置)3aが所定の処理を終了し、クライアント装置2に情報処理装置4へのアクセス用のポート番号「D」を通知した後にアクセス制御装置1に開放要求を送信した場合を示している。
この開放要求には、ポート番号と、開放要求を送信した送信元のサーバ装置を識別する情報(サーバ識別情報)とが含まれている。サーバ識別情報としては、例えば、サーバ名や、サーバのIPアドレス等が挙げられる。
図1に示す開放要求には、クライアント装置2に予め通知したポート番号「D」と、サーバ名「第1のサーバ装置」とが含まれている。
ここで、開放要求には、さらに、一連の処理を識別する情報(一連処理識別情報)が含まれているのが好ましい。
一連の処理としては、特に限定されないが、例えば、クライアント装置2の接続確認にユーザを認証したことを示す識別子を取得する処理や、サーバ装置群3へのアクセス用のセッション識別子を取得するための処理等が挙げられる。
この一連処理識別情報を含めることにより、同一のサーバ装置からの開放要求であっても、異なる処理内容であることを識別することができる。従って、アクセス制御装置1は、処理内容に応じて異なる転送先のサーバ装置を選択することが可能となる。
図1に示す開放要求には、一連処理識別情報の一例として、サーバ装置3aがある処理A(図示せず)を行った結果、発行したトークンA(TA)が含まれている。サーバ装置3aは、この他にも例えば、処理Aとは異なる処理Bを行うことができる。この場合、サーバ装置3aは、処理B(図示せず)を行った結果としてトークンB(TB)を発行することができる。
また、開放要求には、一連処理識別情報の値を示す処理識別値の一例として、「abc」が含まれている。この処理識別値は、生成手段1bが、後述するデータ転送用情報1b1を生成する際に使用することができる。
クライアント装置2は、サーバ装置3aから通知されたポート番号「D」に基づいて、宛先をポート番号「D」とするアドレス(以下「アドレスD」と言う)にアクセスするアクセス要求を生成し、情報処理装置4にアクセスする。
なお、サーバ装置3aから直接「アドレスD」が通知された場合は、この「アドレスD」を用いて情報処理装置4にアクセスすることができる。
生成手段1bは、受信した開放要求に含まれる開放要求を送信したサーバ名とポート番号とに基づいて、ポート番号のポートを開放させて、開放したポートにアクセスしたデータをサーバ装置3aの次にアクセスされるサーバ装置の1つである第2サーバ装置に転送させるデータ転送用情報1b1を生成する。
このデータ転送用情報1b1は、例えば次のようにして生成することができる。
生成手段1bは、開放要求に含まれる、サーバ名「第1のサーバ装置」に基づいて、応答に応じてクライアント装置2がポート番号「D」のポートにアクセスしたデータを転送させるサーバをサーバ装置群3から決定する。
また、生成手段1bは、開放要求に含まれるポート番号「D」に基づいて情報処理装置4の受信アドレス「アドレスD」を生成する。
そして、生成した受信アドレス「アドレスD」と、ポート番号「D」のポートにクライアント装置2がアクセスしたデータを転送する第2サーバ装置(本実施の形態では、サーバ装置3b)のアドレス(転送先アドレス)とを含むデータ転送用情報1b1を生成する。
転送先アドレスは、例えば、格納手段1dを参照することにより決定することができる。
格納手段1dには、サーバ装置群3の少なくとも1つのサーバ名と、一連処理識別情報種別と、転送先アドレスとが関連づけられたサーバ設定情報1d1が予め格納されている。このサーバ設定情報1d1を予め決定して設けることにより、第2サーバ装置のアドレスを容易に決定することができる。
なお、本実施の形態では、格納手段1dは、アクセス制御装置1内に設けたが、アクセス制御装置1の外部に設けられていてもよい。
生成手段1bは、開放要求に含まれるサーバ名「第1のサーバ装置」と一連処理識別情報種別「TA」に一致するサーバ設定情報1d1のエントリを検索する。そして一致したエントリに含まれているサーバ装置3bのアドレス「アドレスB」を取得する。
送信手段1cは、生成手段1bにより生成されたデータ転送用情報1b1を、情報処理装置4に送信する。
図1では、情報処理装置4が、データ転送用情報1b1に従ってポート番号「D」のポートを開放する。
そして、開放したポートにアクセスしたデータを、サーバ装置3bのアドレス「アドレスB」に転送する。具体的には、情報処理装置4が、受信したアドレスの宛先「アドレスD」をサーバ装置3bのアドレス「アドレスB」に変換する。そしてデータをサーバ装置3bのアドレス「アドレスB」に転送する。これにより、サーバ装置3bが、このデータを受け取ることができ、処理を継続して実行することができる。
なお、情報処理装置4は、ポート番号「D」のポートにアクセスがあった要求のみをサーバ装置群3に通知し、それ以外のポートにアクセスした要求は通さないようにする。
このように、アクセス制御装置1が、開放要求に含まれるサーバ名とポート番号とに応じて開放するポートを動的に変更したデータ転送用情報1b1を生成し、情報処理装置4に送信することで、開放するポート番号を動的に変更することができる。これにより、アクセス用のポート番号が通知されていない装置からの当該ポート番号へのアクセスを抑制することができる。
また、アクセス制御装置1を配置することにより、例えば、サーバ装置群3側へのポート番号の変更機能の追加を省略することができる。従って、例えば、既にサーバ装置群3の運用が開始されている等により、サーバ装置群3側にポート番号の変更機能を追加することが困難な場合であっても容易にサーバ装置群3のセキュリティの強化を図ることができる。
また、開放したポート番号のポートにアクセスがあった要求のみをサーバ装置群3に通知し、それ以外のポートにアクセスした要求は通さないようにすることで、DoS攻撃を受けにくくし、サーバ装置群3の負荷を軽減する可能性を高めることができる。
ところで、本実施の形態のアクセス制御装置1は、さらに、情報処理装置4が開放したポートを遮断する(閉じる)機能を有している。
この機能を実現する場合、本実施の形態では、受信手段1aが、遮断要求受信手段としても機能する。生成手段1bがポート遮断用情報生成手段としても機能する。送信手段1cが、ポート遮断用情報送信手段としても機能する。
また、この機能を実現する場合、生成手段1bが、開放要求に含まれるポート番号と、サーバ設定情報1d1に格納されているサーバ装置3bのアドレスとに基づいて、開放するポートを管理する管理情報1d2を生成するのが好ましい。この管理情報1d2を生成することにより、開放されているポートの特定を容易なものとすることができる。
さらに、開放要求に処理識別値が含まれている場合は、この処理識別値を含めた管理情報1d2を生成するのが好ましい。処理識別値を含めることにより、処理単位での開放されているポートの特定が可能となり、また、処理単位でのポートの遮断が可能となる。
図1に示す管理情報1d2は、開放要求に含まれる処理識別値「abc」と、データ転送用情報1b1の受信アドレスと同じ受信アドレス「アドレスD」と、同じ転送先アドレス「アドレスB」とを有している。
生成手段1bは、管理情報1d2を生成した場合、格納手段1dに格納する。
以下、開放されているポートを遮断する処理(遮断処理)を説明する。
図2は、第1の実施の形態のポートの遮断処理を説明する図である。
受信手段1aは、開放されているポートの遮断要求を受信する。
図2では、一例として、サーバ装置3bから遮断要求を受信した場合を示している。
この遮断要求に含まれる情報は、アクセス制御装置1が開放されているポートを特定できれば、その内容は特に限定されないが、例えば、(1)サーバ装置3bのアドレス、(2)処理識別値、(3)サーバ装置3bのアドレスと処理識別値の組み合わせ等が挙げられる。
上記(1)の場合、アドレス単位で遮断するポートを特定することができる。例えば、開放されているポートが1つであれば、サーバ装置3bのアドレスによって開放されているポートを特定することができる。また、上記(2)の場合、一連の処理単位で遮断するポートを特定することができる。これにより、例えば、受信手段1aが、サーバ装置3aから処理識別値の異なる複数の開放要求を受信し、ポートを開放している場合であっても遮断するポートを特定することができる。また、上記(3)の場合、アドレスと一連の処理との組み合わせ単位で遮断するポートを特定することができる。これにより、上記(1)、(2)のいずれの場合にも対応することができる。
本実施の形態では、遮断要求には、上記(3)の場合、すなわち、サーバ装置3bのアドレス「アドレスB」と処理識別値「abc」とが含まれている。
サーバ装置3bが遮断要求を送信するタイミングとしては特に限定されないが、クライアント装置2の要求に対する処理が完了し、クライアント装置2に対して応答するとともに遮断要求を送信するのが好ましい。これにより、ポートを迅速に遮断することができる。
また、他にも、当該サーバ装置3bでの処理が終了したタイミングや、クライアント装置2から転送されたデータを受信してから所定時間経過したタイミング等であってもよい。
生成手段1bは、遮断要求に含まれるアドレス「アドレスB」と処理識別値「abc」とに基づいて、開放されているポートを遮断するポート遮断用情報1b2を生成する。
このポート遮断用情報1b2は、例えば、管理情報1d2を用いて生成することができる。
具体的には、生成手段1bは、遮断要求に含まれるアドレス「アドレスB」と処理識別値「abc」が含まれている管理情報1d2のエントリを取得する。そして、このエントリの受信アドレスを含むポート遮断用情報1b2を生成する。
なお、図1に示す管理情報1d2の場合、遮断要求に含まれるアドレス「アドレスB」だけを用いた場合でもポート遮断用情報1b2を生成することができる。また、遮断要求に含まれる処理識別値「abc」だけを用いた場合でもポート遮断用情報1b2を生成することができる。
送信手段1cは、生成手段1bにより生成されたポート遮断用情報1b2を、情報処理装置4に送信する。
これにより、情報処理装置4は、ポート遮断用情報1b2に含まれている受信アドレス「D」により、開放しているポート番号「D」を特定し、このポートを遮断する。このように、ポートを遮断することで、DoS攻撃を受けにくくし、サーバ装置群3の負荷を軽減する可能性を、より高めることができる。
さらに、アクセス制御装置1が前述したタイミングで遮断要求を受けることで、ポートが開放されている時間を短縮することができる。これによって、よりDoS攻撃を受けにくくし、サーバ装置群3の負荷を軽減する可能性を、さらに高めることができる。
なお、受信手段1a、生成手段1b、送信手段1cは、アクセス制御装置1が有するCPU(Central Processing Unit)が備える機能により実現することができる。また、格納手段1dは、アクセス制御装置1が有するRAM(Random Access Memory)やHDD(HDD:Hard Disk Drive)等が備えるデータ記憶領域により実現することができる。
なお、本実施の形態では、異なる処理を異なるサーバが実行する場合を例に説明し、転送先アドレスを異なるサーバとした。
しかし、これに限らず、例えば、異なる処理を同一のサーバが実行するようにしてもよい。この場合、転送先アドレスは、同一のサーバの異なるポート番号となる。
この場合、サーバ装置3aは、サーバ識別情報にポート番号を加えた処理を識別する情報(以下、「同一サーバ識別情報」と言う)を含む開放要求をアクセス制御装置1に送信する。
そして、アクセス制御装置1は、開放要求に含まれる同一サーバ識別情報に基づいて、転送先アドレスを決定する。
アクセス制御装置1は、例えば、アクセス権の委譲処理に使用することができる。
以下、開示のアクセス制御装置をアクセス権の委譲処理に適用した場合を例に、実施の形態をより具体的に説明する。
<第2の実施の形態>
図3は、第2の実施の形態のシステムを示す図である。
システム1000は、クライアント装置10と、アプリケーションサーバ20と、DoS対策装置30と、サービスセンタ40と、ポート変換設定サーバ(アクセス制御装置)100とを有している。
クライアント装置10とアプリケーションサーバ20とは、ネットワークを介して互いに接続されている。
サービスセンタ40の前段には、DoS対策装置30が設けられている。
クライアント装置10とDoS対策装置30およびアプリケーションサーバ20とDoS対策装置30は、ネットワークを介して接続されている。
また、DoS対策装置30およびサービスセンタ40は、ネットワークを介して接続されている。
クライアント装置10、および、アプリケーションサーバ20は、DoS対策装置30を介してサービスセンタ40にアクセスすることができる。
さらに、サービスセンタ40とDoS対策装置30を接続するポート変換設定サーバ100が設けられている。
なお、サービスセンタ40には、個人情報等が格納された記憶装置43aを有している。この記憶装置43aは、ユーザのクレデンシャル(ユーザID、ユーザパスワード等)を使用したセキュリティにより保護されている。
ここで、クライアント装置10を操作するユーザが、記憶装置43aに格納された個人情報等をアプリケーションサーバ20が有する(第三者の)アプリケーション21に使用させたい場合がある。
しかし、ユーザが、記憶装置43aに格納された個人情報等を利用する際に、ユーザのクレデンシャルをアプリケーション21に預けてしまうと、ユーザのセキュリティが犠牲となる。具体的には、アプリケーション21は、ユーザの許可を取らずに、記憶装置43aにアクセスできてしまう。また、記憶装置43aにアクセスするユーザパスワードを変更してしまうと、記憶装置43aに接続しているアプリケーションの数だけ、ユーザパスワードを変更することになる。
これに対し、システム1000は、ユーザが有する記憶装置43aに対するアクセス権を、ユーザのクレデンシャルを開示せずにアプリケーション21に委譲することを可能とするシステムである。また、ユーザは、アプリケーション21に委譲する権限を事前に確認することができる。
以下、各装置の機能を簡単に説明する。
クライアント装置10は、アプリケーションサーバ20からのリダイレクト指示を処理できるWebブラウザを有している。
クライアント装置10を操作するユーザは、サービスセンタ40に対しアクセスする権利を有している。
アプリケーションサーバ20は、アクセス権限移譲先のアプリケーション21を有するサーバである。アプリケーション21の種別としては特に限定されないが、例えば、地図データに種々の情報を付加するアプリケーションや、写真データに種々の加工を施すアプリケーション等が挙げられる。
また、アプリケーションサーバ20は、アクセスライブラリ22を有している。
アクセスライブラリ22は、サービスサーバ43のAPI(Application Program Interface)が実装されたライブラリである。
サービスサーバ43のAPIおよびアドレス(例えばURL(Uniform Resource Locator)等)は、アプリケーション21およびユーザに予め公開されている。アプリケーションサーバ20がアクセスライブラリ22を組み込むことで、アプリケーション21はアクセス権を委譲してもらう準備ができる。
DoS対策装置30は、サービスセンタ40が、SYN Flooding攻撃、UDP Flooding攻撃、Ping Flooding攻撃等のFlood攻撃や、リロード攻撃等のDoS攻撃を受けることを抑制する装置である。
このDoS対策装置30は、サービスセンタ40が有する各サーバ宛のリクエストをパケットレベルで監視する。
また、DoS対策装置30は、複数のポートを有しており、ポート変換設定サーバ100から通知されたポート番号のポートを開閉する。
また、DoS対策装置30は、NAPT(Network Address Port Translation)機能を有しており、DoS対策装置30とサービスセンタ40内(組織内)でのみ通用するIPアドレス(ローカルアドレス)と、ネットワーク上のアドレス(グローバルアドレス)を透過的に相互変換する。
具体的には、DoS対策装置30は、ポート変換設定サーバ100から通知により開放したポートにアクセスしたパケットに含まれる宛先アドレスを、予め記憶しておいたサービスセンタ40内の転送先アドレスに変換し、変換した転送先アドレスにデータを転送する。なお、ここでいう宛先アドレスには、宛先のIPアドレスとポート番号の組み合わせが含まれる。また、転送先アドレスとは、転送先のIPアドレスとポート番号の組み合わせが含まれる。
以下、単に「アドレス」と言う場合、IPアドレスとポート番号の組み合わせを言う。そして、IPアドレスのみを言う場合は、個別に「IPアドレス」と記載する。
なお、DoS対策装置30は、負荷分散機能、帯域制御・暗号機能、UTM(Unified Threat Management)機能等を有していてもよい。
また、DoS対策装置30は、ポート変換設定サーバ100からの通知に応じて、記憶している宛先アドレスと、この宛先アドレスに対する転送先アドレスを削除する。
サービスセンタ40は、例えばデータセンタ等に設けられており、複数のサーバを有している。本実施の形態のサービスセンタ40は、トークンサーバ41と認証サーバ42とサービスサーバ43とを有している。
トークンサーバ41は、アクセス権の委譲処理に伴いアプリケーションの接続確認にリクエストトークン(RT)、アクセストークン(AT)等の各種トークンを発行する。
トークンは、認証サーバ42とサービスサーバ43がアプリケーション21のアクセス権を確認するために利用する一意のキー(ランダムに生成された文字列)である。これらトークンは、発行時には、未承認のトークンである。
ここで、リクエストトークンは、ユーザを認証したことを示す識別子である。アクセストークンは、サービスサーバ43へのアクセス用のセッション識別子である。
また、トークンサーバ41は、認証サーバ42やサービスサーバ43からトークンの正当性を確認する要求を受信すると、トークンの正当性を確認して、その結果を応答する。
認証サーバ42は、ユーザの操作によりクライアント装置10が送信する未承認のリクエストトークンの認証要求に応じて未承認のリクエストトークンを承認する。
詳しくは、認証サーバ42は、ユーザの操作によりクライアント装置10が送信する認証要求に応じてユーザIDとユーザパスワードを認証することで、ユーザの正当性を確認する。そして正当性が確認できると、未承認のリクエストトークンを承認する。なお、認証方法はユーザIDとユーザパスワードを用いた認証方法に限定されない。
サービスサーバ43は、アクセス権の委譲処理後に、アクセス権が委譲されたアプリケーション21からのサービスデータの提供要求に応じて、記憶装置43aにアクセスし、各種サービスデータを提供する。記憶装置43aが有するサービスデータとしては、特に限定されないが、例えば、ユーザが有するスケジュールデータ等が挙げられる。
ポート変換設定サーバ100は、トークンサーバ41および認証サーバ42がクライアント装置10やアプリケーション21に通知したポート番号のポートを開放する要求をDoS対策装置30に送信する。また、開放したポートにデータアクセスがあったとき、このデータを転送する転送先アドレスをDoS対策装置30に送信する。
また、ポート変換設定サーバ100は、認証サーバ42から認証終了が通知されたり、サービスサーバ43からサービスの終了が通知されたりすると、ポートを開放する際に通知したポート番号のポートを遮断する要求をDoS対策装置30に送信する。
次に、システム1000のアクセス権の委譲処理を説明する。
前処理として、アプリケーションサーバ20は、サービスサーバ43にアクセスし、アクセスライブラリ22を予め組み込んでおく。
アクセス権の委譲処理は、認証フェーズと、データアクセスフェーズとに大別することができる。図3では、認証フェーズの処理の流れを実線で示し、データアクセスフェーズの処理の流れを点線で示している。
[シーケンスSeq1] アプリケーション21のサービスを利用するため、クライアント装置10は、ユーザの操作によりWebブラウザを介してサービス要求をアプリケーションサーバ20に送信する。
[シーケンスSeq2] アプリケーション21は、サービスセンタ40が有するトークンサーバ41に、リクエストトークン要求を送信する。なお、DoS対策装置30は、リクエストトークン要求に対するポート以外の全てのポートを閉じている。
トークンサーバ41は、リクエストトークンを発行する。さらに、トークンサーバ41は、クライアント装置10が認証サーバ42にアクセスできるようにDoS対策装置30に開放させるポート番号を決定する。
トークンサーバ41は、決定したポート番号のポートを開放する要求(以下、「ポートオープン要求」と言う)をポート変換設定サーバ100に送信する。このポートオープン要求には、発行したリクエストトークンのトークン種別、および、トークン値、並びに、決定したポート番号、および、送信元サーバ名が含まれている。
ポート変換設定サーバ100は、ポートオープン要求に基づいて、開放するDoS対策装置30の受信アドレス(ポート番号を含む)を生成し、DoS対策装置30に送信する。これにより、DoS対策装置30は、受信アドレスにより指定されたポートを開放する。また、ポート変換設定サーバ100は、開放したポートに対してアクセスがあった場合の転送先アドレス(ポート番号を含む)として、認証サーバ42のアドレスをDoS対策装置30に送信する。なお、紙面の都合上、図3では、ポート変換設定サーバ100からDoS対策装置30へのデータの送信を1本の矢印で示している。
DoS対策装置30は、開放したポートの受信アドレスに認証サーバ42のアドレスを関連づけて記憶する。
[シーケンスSeq3] トークンサーバ41は、発行したリクエストトークンと決定したポート番号とをメッセージに格納して応答する(RT応答)。なお、図3中、(RT)は、送信または応答するメッセージにリクエストトークンが格納されていることを示している。以下においても同様である。また、応答が通過するDoS対策装置30のポートは特に限定されない。
[シーケンスSeq4] アプリケーション21は、リクエストトークンを格納した許可要求をクライアント装置10に送信する。
[シーケンスSeq5] ユーザは、クライアント装置10に組み込まれているWebブラウザを介して、アプリケーションサーバ20から許可要求があったことを知る。ユーザの操作により、クライアント装置10は、ユーザIDおよびユーザパスワードを格納し、宛先アドレスを開放したポートとする許可要求を送信する。
DoS対策装置30は、開放されたポートで受信した許可要求の宛先アドレスを、関連づけて記憶しておいた認証サーバ42のアドレスに変換し、認証サーバ42に転送する。 認証サーバ42は、ログインを受け付け、許可要求に含まれるユーザIDおよびユーザパスワードを認証する。このとき、認証サーバ42は、認証成功である場合は、トークンサーバ41のアクセストークン発行の際のDoS対策装置30に開放させるポート番号を決定する。そして、認証サーバ42は、決定したポートのポートオープン要求をポート変換設定サーバ100に送信する。
ポート変換設定サーバ100は、ポートオープン要求に基づいて、開放するDoS対策装置30の受信アドレスを生成し、DoS対策装置30に送信する。これにより、DoS対策装置30は、受信アドレスにより指定されたポートを開放する。また、ポート変換設定サーバ100は、開放したポートに対してアクセスがあった場合の転送先アドレスとして、トークンサーバ41のアドレス(ポート番号を含む)をDoS対策装置30に送信する。
DoS対策装置30は、開放したポートの受信アドレスにトークンサーバ41のアドレスを関連づけて記憶する。
[シーケンスSeq6] 認証サーバ42は、許可要求に対する認証結果(認証成功または認証失敗)を応答する。認証成功である場合は、認証サーバ42は、認証成功である旨と決定したポート番号とをメッセージに格納して応答する。一方、認証失敗である場合は、認証失敗である旨のみを、メッセージに格納して応答する。なお、応答が通過するDoS対策装置30のポートは特に限定されない。
認証サーバ42は、許可要求の転送に使用したポートを遮断する要求(以下、「ポートクローズ要求」と言う)をポート変換設定サーバ100に送信する。ポート変換設定サーバ100は、認証に使用したポートを特定し、そのポートを遮断するようDoS対策装置30に送信する。これにより、DoS対策装置30は、認証に使用したポートを遮断する。
ここまでが認証フェーズである。認証失敗の場合、例えば、クライアント装置10のモニタに認証が失敗である旨が表示されて再度、クライアント装置10からの認証要求を受け付ける。認証成功の場合、以下に示すデータアクセスフェーズを実行する。
[シーケンスSeq7] 認証成功を受信したクライアント装置10は、ユーザの操作により、許可処理が完了したことをアプリケーションサーバ20に通知する。
[シーケンスSeq8] アプリケーション21は、リクエストトークンを格納し、宛先アドレスを開放したポートとするアクセストークン交換要求を送信する。
DoS対策装置30は、開放したポートで受信したアクセストークン交換要求の宛先アドレスを、関連づけて記憶しておいたトークンサーバ41のアドレスに変換し、トークンサーバ41に転送する。
[シーケンスSeq9] トークンサーバ41は、アクセストークン交換要求に対しユーザがアクセス許可設定をしているか否かを認証サーバ42に問い合わせる。
アクセス許可設定がなされている場合、トークンサーバ41は、アクセストークンを生成する。さらに、トークンサーバ41は、サービスサーバ43のサービス提供の際のDoS対策装置30に開放させるポート番号を決定する。そして、トークンサーバ41は、決定したポートのポートオープン要求をポート変換設定サーバ100に送信する。このポートオープン要求には、発行したアクセストークンのトークン種別、および、トークン値、並びに、決定したポート番号、および、送信元サーバ名が含まれている。
ポート変換設定サーバ100は、ポート開放要求に基づいて、開放するアドレスを生成し、DoS対策装置30に送信する。これにより、DoS対策装置30は、アドレスにより指定されたポートを開放する。また、ポート変換設定サーバ100は、開放したポートに対してアクセスがあった場合の転送先のアドレスとして、サービスサーバ43のアドレスをDoS対策装置30に送信する。
DoS対策装置30は、開放したポートの受信アドレスにサービスサーバ43のアドレスを関連づけて記憶する。
[シーケンスSeq10] トークンサーバ41は、生成したアクセストークンと決定したポート番号とをメッセージに格納して応答する(AT応答)。なお、応答が通過するDoS対策装置30のポートは特に限定されない。
トークンサーバ41は、アクセストークン交換要求の転送に使用したポートのポートクローズ要求をポート変換設定サーバ100に送信する。ポート変換設定サーバ100は、アクセストークン交換要求に使用したポートを特定し、そのポートを遮断するようDoS対策装置30に送信する。これにより、DoS対策装置30は、アクセストークン交換要求の転送に使用したポートを遮断する。
[シーケンスSeq11] アプリケーション21はアクセストークンを格納し宛先アドレスを開放したポートとするサービス要求を送信する。
DoS対策装置30は、受信したサービス要求の宛先アドレスを、関連づけて記憶しておいたサービスサーバ43のアドレスに変換し、サービスサーバ43に転送する。
[シーケンスSeq12] サービスサーバ43は、サービス要求に格納されているアクセストークン(もともとはリクエストトークン)に対し設定されているアクセス権を確認する。
[シーケンスSeq13] アクセス権が設定されている場合、サービスサーバ43は、その権限(リソースの種類、期間等)に従って応答する。
[シーケンスSeq14] アプリケーション21は、必要に応じた処理を行い、クライアント装置10に処理の結果を応答する。これにより、クライアント装置10は、アプリケーション21により処理されたサービスを享受することができる。例えば、アプリケーション21が地図作成アプリケーションである場合を例に説明する。
クライアント装置10は、アプリケーション21にサービスサーバ43にアクセスさせて、記憶装置43a内にあるユーザのスケジュールデータを取得させる。そして、アプリケーション21に、取得させたスケジュールデータと地図の表示とをマッシュアップ(MashUp)させて、推奨訪問経路を作成させ、クライアント装置10に送信させる。
なお、図示していないが、サービスサーバ43は、DoS対策装置30が、サービス要求の転送に使用したポートのポートクローズ要求をポート変換設定サーバ100に送信することができる。ポート変換設定サーバ100は、サービス要求に使用したポートを特定し、そのポートを遮断するようDoS対策装置30に送信することができる。これにより、DoS対策装置30は、サービス要求の転送に使用したポートを遮断することができる。
このような処理により、ユーザは、自分のユーザIDおよびユーザパスワードをアプリケーション21に伝えなくても、サービスサーバ43へのアクセス権をアプリケーション21に委譲することができる。
また、ポート変換設定サーバ100が、トークンサーバ41および認証サーバ42がクライアント装置10やアプリケーション21に通知したポート番号と同じポート番号のポートをDoS対策装置30に開放させるようにした。また、ポート変換設定サーバ100が、各サーバの転送先アドレスをDoS対策装置30に送信し、DoS対策装置30に転送先アドレスへデータを転送させるようにした。
これにより、サービスセンタ40が、ポート番号を意識することなく処理を行うことができる。すなわち、サービスセンタ40側にポート変換機能を配置せずに、ポート番号を動的に変更することができる。従って、容易にセキュリティの強化を図ることができる。また、ポート番号の書き換えに伴うサーバの処理コスト(TCPソケットのオープン、クローズ等)を軽減し、サービスセンタ40内のサーバの負荷を低減することができる。
以下、ポート変換設定サーバ100の構成と機能を説明する。そして、ポートの開閉に伴うポート変換設定サーバ100、並びに、トークンサーバ41、認証サーバ42、サービスサーバ43の処理を詳しく説明する。
図4は、ポート変換設定サーバのハードウェア構成例を示す図である。
ポート変換設定サーバ100は、CPU11によって装置全体が制御されている。CPU11には、バス17を介して記憶部12、グラフィック処理装置13、入力インタフェース14、外部補助記憶装置15および通信インタフェース16が接続されている。
記憶部12は、RAM12aと、HDD(ハードディスクドライブ)12bとを有している。
RAM12aには、CPU11に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM12aには、CPU11による処理に伴う各種データが格納される。HDD12bには、OSやアプリケーションプログラムが格納される。また、HDD12b内には、プログラムファイルが格納される。
グラフィック処理装置13には、モニタ13aが接続されている。グラフィック処理装置13は、CPU11からの命令に従って、画像をモニタ13aの画面に表示させる。入力インタフェース14には、キーボード14aとマウス14bとが接続されている。入力インタフェース14は、キーボード14aやマウス14bから送られてくる信号を、バス17を介してCPU11に送信する。
外部補助記憶装置15は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置15で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、ブルーレイディスク(Blu-ray Disc)、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
通信インタフェース16は、ネットワーク50に接続されている。通信インタフェース16は、ネットワーク50を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成のポート変換設定サーバ100内には、以下のような機能が設けられる。
図5は、第2の実施の形態のポート変換設定サーバの機能を示すブロック図である。
記憶部12は、次サーバ設定情報格納部121と、ポート管理情報格納部122と、エラーログ格納部123とを有している。
次サーバ設定情報格納部121には、サーバの種別とトークンの種別に基づいてアクセスさせるサーバの転送先アドレスが予め(事前に設定されて)格納されている。
ポート管理情報格納部122には、開放するポートを管理する情報が、一時的に格納される。この情報は、ポート遮断時に用いられる。
エラーログ格納部123には、エラーログが格納される。
CPU11は、通信データ受信部111と、通信データ解析部112と、ポートオープン処理部113と、ポートクローズ処理部114と、通信データ送信部115としての各機能を実行させる。
通信データ受信部111は、通信インタフェース16を介してサービスセンタ40内の各サーバからメッセージを受信する。
通信データ解析部112は、通信データ受信部111が受信したメッセージに含まれる要求を解析する。そして、当該要求がポートオープン要求である場合は、ポートオープン処理をポートオープン処理部113に依頼する。当該要求がポートクローズ要求である場合は、ポートクローズ処理をポートクローズ処理部114に依頼する。
ここで、ポートオープン要求には、送信元であるサーバを識別する情報(本実施の形態では送信元サーバ名)とトークン種別とトークン値とポート番号とが含まれている。また、ポートクローズ要求には、送信元サーバのIPアドレスとトークン値とが含まれている。
ポートオープン処理部113は、通信データ解析部112からポートオープン処理の依頼を受けると、次サーバ設定情報格納部121を参照して転送先アドレスを取得する。なお、転送先アドレスの取得方法については、後述する。
また、ポートオープン処理部113は、取得した転送先アドレスとポートオープン要求に含まれるポート番号とに基づいて、受信アドレスを生成する。そして、ポートオープン処理部113は、取得した転送先アドレスと生成された受信アドレスとを含むアドレス変換用データを生成する。このアドレス変換用データの先頭パケットには、アドレス変換用データであることを識別する情報を付加することができる。ポートオープン処理部113は、生成したアドレス変換用データを通信データ送信部115に送る。
さらに、ポートオープン処理部113は、生成したアドレス変換用データに含まれる受信アドレスおよび転送先アドレスを、受信したトークン値に関連づけてポート管理情報格納部122に格納する。
ポートクローズ処理部114は、通信データ解析部112からポートクローズ処理の依頼を受けると、ポート管理情報格納部122を参照してメッセージに含まれるトークン値に一致するトークン値を有するエントリを取得する。なお、エントリの取得方法については、後述する。
そして、エントリを取得したポートクローズ処理部114は、取得したエントリに含まれている受信アドレスを含むポート遮断用データを生成する。このポート遮断用データの先頭パケットには、ポート遮断用データであることを識別する情報が付加されている。ポートクローズ処理部114は、生成したアドレス変換用データを通信データ送信部115に送る。
また、ポートクローズ処理部114は、取得したエントリをポート管理情報格納部122から削除する。
通信データ送信部115は、ポートオープン処理部113から送られてくるアドレス変換用データおよびポートクローズ処理部114から送られてくるポート遮断用データを、通信インタフェース16を介してDoS対策装置30に送信する。
次に、次サーバ設定情報格納部121に格納されている次サーバ設定情報を説明する。次サーバ設定情報格納部121では次サーバ設定情報がテーブル化されて格納されている。
図6は、次サーバ設定テーブルのデータ構造例を示す図である。
次サーバ設定テーブル121aには、エントリ識別情報、送信元サーバ名、トークン種別、転送先アドレスの欄が設けられており、各欄の横方向に並べられた情報同士が互いに関連づけられている。
エントリ識別情報の欄には、エントリを識別する情報が設定される。図6の例では、1行目のエントリには「A」が設定されている。2行目のエントリには「B」が設定されている。3行目のエントリには「C」が設定されている。
送信元サーバ名の欄には、送信元であるサーバを識別する情報が設定される。なお、この欄の情報は、ポートオープン要求に含まれる送信元サーバ名に対応している。
トークン種別の欄には、ポート変換設定サーバ100が送信元のサーバから受け取ったトークン種別を識別する情報が設定される。リクエストトークンであれば「RT」が設定される。アクセストークンであれば「AT」が設定される。
転送先アドレスの欄には、クライアント装置10またはアプリケーションサーバ20から要求を受け取ったときに、DoS対策装置30に転送させる転送先のサーバのIPアドレスとポート番号が設定される。図6の例では、エントリ「A」には、トークンサーバ41のIPアドレス「10.25.20.1」とポート番号「10」が設定されている。エントリ「B」には、トークンサーバ41のIPアドレス「10.25.20.2」とポート番号「20」が設定されている。エントリ「C」には、認証サーバ42のIPアドレス「10.25.20.3」とポート番号「30」が設定されている。
このように送信元のサーバが同じであっても、トークン種別が異なれば、転送先のアドレスが異なっている。
転送先アドレスの欄に設定されるアドレスは、アクセス権の委譲処理の順番に沿ったサーバのアドレスが設定されている。すなわち、図3にて示したように、トークンサーバ41がリクエストトークンを発行した次の処理は、認証サーバ42の認証処理となるため、転送先アドレスの欄には、認証サーバ42のアドレスが設定されている。また、トークンサーバ41がアクセストークンを発行した次の処理は、サービスサーバ43のサービスの提供となるため、転送先アドレスの欄には、サービスサーバ43のアドレスが設定されている。また、認証サーバ42が認証処理を行った次の処理は、トークンサーバ41のアクセストークン発行処理となるため、トークンサーバ41のアドレスが設定されている。
このように、アクセス委譲処理の流れに沿ってアクセスする転送先アドレスを用意したテーブルを予め設定しておくことで、転送先アドレスを容易に決定することができる。
次に、ポート管理情報格納部122に格納されているユーザポート管理情報を説明する。ポート管理情報格納部122ではユーザポート管理情報がテーブル化されて格納されている。
図7は、第2の実施の形態のポート管理テーブルのデータ構造例を示す図である。
ポート管理テーブル122aには、トークン値、受信アドレス、転送先アドレスの欄が設けられており、各欄の横方向に並べられた情報同士が互いに関連づけられている。
トークン値の欄には、受信したトークンのトークン値を識別する情報が格納される。
受信アドレスの欄には、ポートオープン処理において生成された受信アドレスが格納される。
転送先アドレスの欄には、受信アドレスの欄に格納されているポート番号のポートに対しクライアント装置10またはアプリケーション21からアクセスがあったときの転送先のサーバのアドレスが格納される。
以下、各装置の処理を詳しく説明する。
まず、ポート変換設定サーバ100の処理(ポート変換設定処理)を説明する。
<ポート変換設定処理>
図8は、第2の実施の形態のポート変換設定処理を示すフローチャートである。
[ステップS1] 通信データ受信部111は、メッセージを受信する。その後、ステップS2に遷移する。
[ステップS2] 通信データ解析部112は、受信したメッセージがポートオープン要求か否かを判断する。ポートオープン要求であれば(ステップS2のYes)、ステップS3に遷移する。ポートオープン要求ではなければ(ステップS2のNo)、ステップS10に遷移する。
[ステップS3] ポートオープン処理部113は、メッセージに含まれている送信元サーバ名、および、トークン種別をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして、一致するエントリの転送先アドレスを取得する。その後、ステップS4に遷移する。
[ステップS4] ポートオープン処理部113は、アドレス変換用データを生成する。その後、ステップS5に遷移する。
[ステップS5] ポートオープン処理部113は、ポート管理テーブル122aを参照し、生成したアドレス変換用データの受信アドレスが重複しているか否かを判断する。重複していない場合は(ステップS5のNo)、ステップS6に遷移する。重複している場合は(ステップS5のYes)、ステップS9に遷移する。
[ステップS6] ポートオープン処理部113は、受信アドレスが重複していないこと(以下、「重複なし」と言う)を、ポートオープン要求を送信したサーバに応答する。その後、ステップS7に遷移する。
[ステップS7] ポートオープン処理部113は、ステップS4にて生成したアドレス変換用データに含まれる受信アドレスおよび転送先アドレスを、受信したメッセージに含まれているトークン値に関連づけてポート管理テーブル122aに登録する。その後、ステップS8に遷移する。
[ステップS8] ポートオープン処理部113は、通信データ送信部115を介してDoS対策装置30にアドレス変換用データを送信する。その後、ポート変換設定処理を終了する。
[ステップS9] ポートオープン処理部113は、アドレス重複エラーを、ポートオープン要求を送信したサーバに応答する。その後、ポート変換設定処理を終了する。
なお、ステップS6〜ステップS8の処理の順番は、特に限定されず、例えば、ステップS7の処理をステップS6の処理の前に行ってもよい。
[ステップS10] 通信データ解析部112は、受信したメッセージがポートクローズ要求か否かを判断する。ポートクローズ要求であれば(ステップS10のYes)、ステップS11に遷移する。ポートクローズ要求ではなければ(ステップS10のNo)、ステップS14に遷移する。
[ステップS11] ポートクローズ処理部114は、ポート管理テーブル122aを参照し、メッセージに含まれているトークンに一致するトークンを有するエントリを取得する。その後、ステップS12に遷移する。
[ステップS12] ポートクローズ処理部114は、取得したエントリに含まれている受信アドレスを含むポート遮断用データを生成する。そして、生成したポート遮断用データを、通信データ送信部115を介してDoS対策装置30に送信する。その後、ステップS13に遷移する。
[ステップS13] ポートオープン処理部113は、ステップS11にて取得したエントリをポート管理テーブル122aから削除する。その後、ポート変換設定処理を終了する。
[ステップS14] 通信データ解析部112は、受信したメッセージをエラーログとしてエラーログ格納部123に格納する。その後、ポート変換設定処理を終了する。
以上で、ポート変換設定処理の説明を終了する。
<リクエストトークン発行処理>
次に、トークンサーバ41のリクエストトークン発行処理を説明する。
図9は、第2の実施の形態のリクエストトークン発行処理を示すフローチャートである。
[ステップS21] トークンサーバ41は、クライアント装置10からリクエストトークン要求を受信するとステップS22に遷移する。
[ステップS22] トークンサーバ41は、リクエストトークンを発行し、アプリケーション21に送信する。その後、ステップS23に遷移する。
[ステップS23] トークンサーバ41は、ポート番号をランダムに選択する。その後、ステップS24に遷移する。なお、アドレス重複エラーの場合、すなわち、ステップS25から遷移してきた場合、再度、ポート番号を選択する。この場合の選び方は、特に限定されず、再度ランダムに選択する、前回選択したポート番号に所定値(例えば1)を加算したポート番号を選択する等でもよい。
[ステップS24] トークンサーバ41は、発行したリクエストトークンのトークン種別、トークン値、選択したポート番号、トークンサーバ41の送信元サーバ名を引数に、ポートオープン要求をポート変換設定サーバ100に送信する。その後、ポート変換設定サーバ100からの応答を待機する。ポート変換設定サーバ100から応答があると、ステップS25に遷移する。
[ステップS25] トークンサーバ41は、ポート変換設定サーバ100からの応答が、アドレス重複エラーか否かを判断する。アドレス重複エラーである場合(ステップS25のYes)、ステップS23に遷移する。一方、アドレス重複エラーではない場合(ステップS25のNo)、ステップS26に遷移する。
[ステップS26] トークンサーバ41は、リクエストトークンと決定したポート番号をメッセージに格納してクライアント装置10に応答する。その後、処理を終了する。
以上でリクエストトークン発行処理の説明を終了する。
<認証処理>
次に、認証サーバ42の認証処理を説明する。
図10は、第2の実施の形態の認証処理を示すフローチャートである。
[ステップS31] 認証サーバ42は、クライアント装置10から認証要求を受信する。その後、ステップS32に遷移する。
[ステップS32] 認証サーバ42は、認証要求に含まれるリクエストトークンを抽出する。その後、ステップS33に遷移する。
[ステップS33] 認証サーバ42は、抽出したリクエストトークンが、トークンサーバが発行したリクエストトークンであるか否かをトークンサーバ41に問い合わせる。トークンサーバ41からの応答があればステップS34に遷移する。
[ステップS34] 認証サーバ42は、トークンサーバ41からの応答により、抽出したリクエストトークンが、トークンサーバ41が発行したリクエストトークンであるか否かを判断する。トークンサーバ41が発行したリクエストトークンである場合(ステップS34のYes)、ステップS35に遷移する。トークンサーバ41が発行したリクエストトークンではない場合(ステップS34のNo)、ステップS42に遷移する。
[ステップS35] 認証サーバ42は、認証要求に含まれるユーザIDおよびユーザパスワードが、正当なものか否かを認証する。
[ステップS36] 認証サーバ42は、認証の結果、正当なユーザIDおよびユーザパスワードである場合(ステップS36のYes)、ステップS37に遷移する。正当なユーザIDおよびユーザパスワードではない場合(ステップS36のNo)、ステップS42に遷移する。
[ステップS37] 認証サーバ42は、ポート番号をランダムに選択する。その後、ステップS38に遷移する。なお、アドレス重複エラーの場合、すなわち、ステップS39から遷移してきた場合、再度、ポート番号を選択する。この場合の選び方は、特に限定されず、再度ランダムに選択する、前回選択したポート番号に所定値(例えば1)を加算したポート番号を選択する等でもよい。
[ステップS38] 認証サーバ42は、リクエストトークンのトークン種別、トークン値、選択したポート番号、認証サーバ42の送信元サーバ名を引数に、ポートオープン要求をポート変換設定サーバ100に送信する。その後、ポート変換設定サーバ100からの応答を待機する。ポート変換設定サーバ100から応答があると、ステップS39に遷移する。
[ステップS39] 認証サーバ42は、その応答がアドレス重複エラーか否かを判断する。アドレス重複エラーである場合(ステップS39のYes)、ステップS37に遷移する。一方、アドレス重複エラーではない場合(ステップS39のNo)、ステップS40に遷移する。
[ステップS40] 認証サーバ42は、ポート番号を格納した認証成功を応答する。その後、ステップS41に遷移する。
[ステップS41] 認証サーバ42は、トークン値、送信元アドレスを引数に、ポートクローズ要求をポート変換設定サーバ100に送信する。その後、認証処理を終了する。
[ステップS42] 認証サーバ42は、認証エラーをクライアント装置10に応答する。その後、認証処理を終了する。
以上で、認証処理の説明を終了する。
<アクセストークン発行処理>
次に、トークンサーバ41のアクセストークン発行処理を説明する。
図11は、第2の実施の形態のアクセストークン発行処理を示すフローチャートである。
[ステップS51] トークンサーバ41は、クライアント装置10からアクセストークン交換要求を受信する。その後、ステップS52に遷移する。
[ステップS52] トークンサーバ41は、受信した要求からリクエストトークンを抽出する。その後、ステップS53に遷移する。
[ステップS53] トークンサーバ41は、抽出したリクエストトークンが、トークンサーバ41が発行したものか否かを判断する。トークンサーバ41が発行したものである場合(ステップS53のYes)、ステップS54に遷移する。トークンサーバ41が発行したものではない場合(ステップS53のNo)、ステップS62に遷移する。
[ステップS54] トークンサーバ41は、抽出したリクエストトークンに対しユーザがアクセス許可設定しているか否かを認証サーバ42に問い合わせる。認証サーバ42からの応答があれば、ステップS55に遷移する。
[ステップS55] トークンサーバ41は、問い合わせの結果、ユーザがアクセス許可設定しているという通知を受信した場合(ステップS55のYes)、ステップS56に遷移する。ユーザがアクセス許可設定していないという通知を受信した場合(ステップS55のNo)、ステップS62に遷移する。
[ステップS56] トークンサーバ41は、アクセストークンを発行し、クライアント装置10に送信する。その後、ステップS57に遷移する。
[ステップS57] トークンサーバ41は、ポート番号をランダムに選択する。その後、ステップS58に遷移する。なお、アドレス重複エラーの場合、すなわち、ステップS59から遷移してきた場合、再度、ポート番号を選択する。この場合の選び方は、特に限定されず、再度ランダムに選択する、前回選択したポート番号に所定値(例えば1)を加算したポート番号を選択する等でもよい。
[ステップS58] トークンサーバ41は、トークン値、ポート番号、送信元サーバ名を引数に、ポートオープン要求をポート変換設定サーバ100に送信する。その後、ポート変換設定サーバ100からの応答を待機する。ポート変換設定サーバ100から応答があると、ステップS59に遷移する。
[ステップS59] トークンサーバ41は、ポート変換設定サーバ100からの応答がアドレス重複エラーか否かを判断する。アドレス重複エラーである場合(ステップS59のYes)、ステップS57に遷移する。一方、アドレス重複エラーではない場合(ステップS59のNo)、ステップS60に遷移する。
[ステップS60] トークンサーバ41は、ポート番号を格納してアクセストークン交換要求に対して応答する。その後、ステップS61に遷移する。
[ステップS61] トークンサーバ41は、トークン値、送信元アドレスを引数に、ポートクローズ要求をポート変換設定サーバ100に送信する。その後、アクセストークン発行処理を終了する。
[ステップS62] トークンサーバ41は、エラーをクライアント装置10に応答する。その後、アクセストークン発行処理を終了する。
以上で、アクセストークン発行処理の説明を終了する。
次に、サービスサーバ43の処理を説明する。
図12は、サービスサーバの処理を示すフローチャートである。
[ステップS71] サービスサーバ43は、アプリケーション21からサービス要求を受信するとステップS72に遷移する。
[ステップS72] サービスサーバ43は、サービス要求に含まれているアクセストークンを抽出する。その後、ステップS73に遷移する。
[ステップS73] サービスサーバ43は、抽出したアクセストークンが、トークンサーバ41が発行したものか否かをトークンサーバ41に問い合わせる。
[ステップS74] サービスサーバ43は、トークンサーバ41からの応答により、抽出したアクセストークンが、トークンサーバ41が発行したアクセストークンであるか否かを判断する。トークンサーバ41が発行したアクセストークンである場合(ステップS74のYes)、ステップS75に遷移する。トークンサーバ41が発行したアクセストークンではない場合(ステップS74のNo)、ステップS76に遷移する。
[ステップS75] サービスサーバ43は、サービス処理の結果をアプリケーション21に応答する。
[ステップS76] サービスサーバ43は、エラーをアプリケーション21に応答する。
以上でサービスサーバの処理の説明を終了する。
次に、図6に示す次サーバ設定テーブル121aを用いてシステム1000の全体処理の具体例を説明する。
図13、図15〜図18は、第2の実施の形態のシステムの処理の具体例を示す図である。なお、図13、図15〜図18では、紙面の都合上、トークンサーバ41のIPアドレスとポート番号の組み合わせ「10.25.20.3:30」を「IPa:30」と表記している。認証サーバ42のIPアドレスとポート番号の組み合わせ「10.25.20.1:10」を「IPb:10」と表記している。サービスサーバ43のIPアドレスとポート番号の組み合わせ「10.25.20.2:20」を「IPc:20」と表記している。
また、受信アドレス「10.25.20.3:20011」を「IPa:20011」と表記している。受信アドレス「10.25.20.1:20001」を「IPb:20001」と表記している。受信アドレス「10.25.20.2:20021」を「IPc:20021」と表記している。
また、本具体例では、アクセス権の委譲処理が開始する前は、ポート管理テーブル122aの各欄は空欄である。
以下、図3にて説明したシーケンスと同じシーケンスには、同じシーケンス番号を附している。また、シーケンス番号の後に付される「a」や「b」は、そのシーケンス番号の処理を細分化したシーケンスであることを示している。
[シーケンスSeq1] 図13に示すように、クライアント装置10は、サービス要求をアプリケーション21に送信する。
[シーケンスSeq2] クライアント装置10からサービス要求を受信したアプリケーション21は、リクエストトークン要求をトークンサーバ41に送信する。
リクエストトークン要求を受信したトークンサーバ41は、トークン値「RT001」のリクエストトークンを発行し、アプリケーション21に送信する。次に、トークンサーバ41は、アプリケーション21からのアクセスを許可するポート番号をランダムに選択する。本具体例では、「20001」とする。
[シーケンスSeq2a] トークンサーバ41は、発行したトークンのトークン種別「RT」、トークン値「RT001」、ポート番号「20001」、送信元サーバ名「トークンサーバ」を引数に、ポートオープン要求をポート変換設定サーバ100に送信する。そして、応答を待機する。
[シーケンスSeq2b] ポートオープン要求を受信したポート変換設定サーバ100は、メッセージに含まれている送信元サーバ名「トークンサーバ」とトークン種別「RT」をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして一致する1行目のエントリの転送先アドレス「10.25.20.1:10」を取得する。
次に、ポート変換設定サーバ100は、取得した転送用アドレス「10.25.20.1:10」と通知されたポート番号「20001」より、受信アドレス「10.25.20.1:20001」を生成する。そして、受信アドレス「10.25.20.1:20001」と転送先アドレス「10.25.20.1:10」とを含むアドレス変換用データ150を生成する。
そして、ポート変換設定サーバ100は、ポート管理テーブル122aを参照し、生成した受信アドレスが、既に生成したアドレス変換用データの受信アドレスと重複しているか否かをチェックする。本具体例では各欄は空欄であり重複していないため、ポート変換設定サーバ100は、アドレス変換用データ150をDoS対策装置30に送信する。これにより、DoS対策装置30は、ポート番号「20001」のポートP1を開放する。また、DoS対策装置30は、受信アドレス「10.25.20.1:20001」と転送先アドレス「10.25.20.1:10」を関連づけて記憶する。DoS対策装置30は、例えば、情報をテーブル化して記憶している。
図14は、第2の実施の形態のアドレス変換テーブルのデータ構造例を示す図である。
DoS対策装置30が有するアドレス変換テーブル30aには、受信アドレス、転送先アドレスの欄が設けられており、各欄の横方向に並べられた情報同士が互いに関連づけられている。
受信アドレスの欄には、アドレス変換用データに含まれる受信アドレスが格納される。
転送先アドレスの欄には、アドレス変換用データに含まれる転送先アドレスが格納される。
再び図13に戻って説明する。
また、ポート変換設定サーバ100は、受信アドレス「10.25.20.1:20001」と転送先アドレス「10.25.20.1:10」をトークン値「RT001」に関連づけたエントリをポート管理テーブル122aに設定する。
また、ポート変換設定サーバ100は、「重複なし」をトークンサーバ41に応答する。
[シーケンスSeq3] 応答を取得したトークンサーバ41は、応答がアドレス重複エラーでないため、リクエストトークンのトークン値「RT001」と、ポート番号「20001」を応答メッセージに格納してアプリケーション21に応答する。
[シーケンスSeq4] 応答を受信したアプリケーション21は、受信したリクエストトークンのトークン値「RT001」とポート番号「20001」を格納した許可要求をクライアント装置10に送信する。
[シーケンスSeq5] クライアント装置10は、アクセス許可設定のため、指定されたポート番号「20001」のアドレス「10.25.20.1:20001」宛にパケットを送信する。このパケットには、リクエストトークンのトークン値「RT001」とユーザIDとユーザパスワードとが格納されている。
[シーケンスSeq5a] このデータをポート番号「20001」で受信したDoS対策装置30は、アドレス変換テーブル30aを参照する。そして、受信したパケットの宛先アドレス「10.25.20.1:20001」を、関連づけて格納されている転送先アドレス「10.25.20.1:10」に変換して転送する。この結果、パケットは、認証サーバ42にて受信される。
[シーケンスSeq5b] 図15に示すように、認証サーバ42は、受信したパケットからリクエストトークンのトークン値「RT001」を抽出し、トークンサーバ41が発行したものか否かをトークンサーバ41に問い合わせる。本具体例では、シーケンスSeq2にてトークンサーバ41が発行したものであるため、次に進む。
次に、認証サーバ42は、ユーザIDとユーザパスワードの認証を行う。本具体例では、正しいユーザであるため、ポート番号をランダムに選択する。本具体例では、「20011」を選択する。
[シーケンスSeq5c] さらに、認証サーバ42は、トークン種別「RT」、トークン値「RT001」、ポート番号「20011」、送信元サーバ名「認証サーバ」を引数に、ポートオープン要求をポート変換設定サーバ100に送信し、応答を待機する。
[シーケンスSeq5d] ポートオープン要求を受信したポート変換設定サーバ100は、送信元サーバ名「認証サーバ」とトークン種別「RT」をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして、一致する3行目のエントリの転送先アドレス「10.25.20.3:30」を取得する。
次に、転送先アドレス「10.25.20.3:30」と通知されたポート番号「20011」より、受信アドレス「10.25.20.3:20011」を生成する。そして、受信アドレス「10.25.20.3:20011」と転送先アドレス「10.25.20.3:30」とを含むアドレス変換用データ151を生成する。
そして、ポート変換設定サーバ100は、ポート管理テーブル122aを参照して、生成した受信アドレスが、既に生成した受信アドレスに重複しているか否かをチェックする。
本具体例では重複していないため、ポート変換設定サーバ100は、アドレス変換用データ151をDoS対策装置30に送信する。これにより、DoS対策装置30は、ポート番号「20011」のポートP2を開放する。また、DoS対策装置30は、受信アドレス「10.25.20.3:20011」と転送先アドレス「10.25.20.3:30」を関連づけてアドレス変換テーブル30aに記憶する。
また、ポート変換設定サーバ100は、受信アドレス「10.25.20.3:20011」と転送先アドレス「10.25.20.3:30」をトークン値「RT001」に関連づけたエントリをポート管理テーブル122aに設定する。また、認証サーバ42に「重複なし」を応答する。
[シーケンスSeq6] 応答を取得した認証サーバ42は、応答がアドレス重複エラーでないため、認証サーバ42により認証されたリクエストトークンのトークン値「RT001」と、ポート番号「20011」を格納した認証成功をクライアント装置10に応答する。
[シーケンスSeq6a] クライアント装置10への応答後、図16に示すように、認証サーバ42は、トークン値「RT001」、送信元アドレス「10.25.20.1:10」を引数に、ポートクローズ要求を、ポート変換設定サーバ100に送信する。
[シーケンスSeq6b] ポートクローズ要求を受信したポート変換設定サーバ100は、トークン値「RT001」、送信元アドレス「10.25.20.1:10」をキーワードにして、キーワードに一致するポート管理テーブル122aのエントリを検索する。そして一致する1行目のエントリを取得する。
そして、ポート変換設定サーバ100は、受信アドレス「10.25.20.1:20001」を有するポート遮断用データ152を生成する。そして、生成したポート遮断用データをDoS対策装置30に送信する。これにより、DoS対策装置30は、ポート番号「20001」のポートP1を遮断する。また、ポート変換設定サーバ100は、1行目のエントリを削除する。
[シーケンスSeq7] 認証成功を受信したクライアント装置10は、トークン値「RT001」とポート番号「20011」を引数に許可完了をアプリケーション21に応答する。
[シーケンスSeq8] 応答を受信したアプリケーション21は、指定されたポート番号「20011」のアドレス「10.25.20.3:20011」宛に、トークン値「RT001」を格納したアクセストークン交換要求を送信する。
[シーケンスSeq8a] アクセストークン交換要求をポート番号「20011」で受信したDoS対策装置30は、アドレス変換テーブル30aを参照する。そして、受信したパケットの宛先アドレス「10.25.20.3:20011」を、関連づけて格納されている転送先アドレス「10.25.20.3:30」に変換して転送する。この結果、パケットは、トークンサーバ41にて受信される。
アクセストークン交換要求を受信したトークンサーバ41は、要求メッセージからリクエストトークンのトークン値「RT001」を抽出し、トークンサーバ41が発行したものか否かをチェックする。本具体例では、シーケンスSeq2にてトークンサーバ41が発行したものであるので次に進む。
[シーケンスSeq9] 図17に示すように、トークンサーバ41は、トークン値「RT001」のリクエストトークンに対し、ユーザがアクセス許可設定をしているか否かを認証サーバ42に問い合わせる。本具体例では、アクセス許可設定がされているため次に進む。
[シーケンスSeq9a] 次に、トークンサーバ41は、トークン値「AT001」のアクセストークンを発行し、クライアント装置10に送信する。そして、トークンサーバ41は、ポート番号をランダムに選択する。本具体例では、「20021」を選択する。さらにトークンサーバ41は、トークン種別「AT」、トークン値「AT001」、ポート番号「20021」、送信元サーバ名「トークンサーバ」を引数に、ポートオープン要求をポート変換設定サーバ100に送信し、応答を待機する。
[シーケンスSeq9b] ポートオープン要求を受信したポート変換設定サーバ100は、送信元サーバ名「トークンサーバ」とトークン種別「AT」をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして一致する2行目のエントリの転送先アドレス「10.25.20.2:20」を取得する。
次に、転送先アドレス「10.25.20.2:20」と通知されたポート番号「20021」より、受信アドレス「10.25.20.2:20021」、転送先アドレス「10.25.20.2:20」とを含むアドレス変換用データ153を生成する。そして、ポート管理テーブル122aを参照し、受信アドレスが重複しているか否かチェックする。
本具体例では、重複していないので、生成したアドレス変換用データ153をDoS対策装置30に送信する。これにより、DoS対策装置30は、ポート番号「20021」のポートP3を開放する。また、DoS対策装置30は、受信アドレス「10.25.20.2:20021」と転送先アドレス「10.25.20.2:20」を関連づけてアドレス変換テーブル30aに記憶する。
また、ポート変換設定サーバ100は、受信アドレス「10.25.20.2:20021」と転送先アドレス「10.25.20.2:20」をトークン値「AT001」に関連づけたエントリを、ポート管理テーブル122aに設定する。
また、ポート変換設定サーバ100は、「重複なし」をトークンサーバ41に応答する。
[シーケンスSeq10] 応答を取得したトークンサーバ41は、応答がアドレス重複エラーでないため、トークン値「AT001」のアクセストークンと、ポート番号「20021」を応答メッセージに格納してアプリケーション21に応答する。
[シーケンスSeq10a] クライアント装置10への応答後、図18に示すように、トークンサーバ41は、トークン値「RT001」、送信元アドレス「10.25.20.3:30」を引数に、ポートクローズ要求を、ポート変換設定サーバ100に送信する。
[シーケンスSeq10b] ポートクローズ要求を受信したポート変換設定サーバ100は、トークン値「RT001」、送信元アドレス「10.25.20.3:30」をキーワードにして、キーワードに一致するポート管理テーブル122aのエントリを検索する。そして一致する1行目のエントリを取得する。
ポート変換設定サーバ100は、受信アドレス「10.25.20.3:20011」を有するポート遮断用データ154を生成する。
そして、ポート変換設定サーバ100は、このポート遮断用データ154をDoS対策装置30に送信する。これにより、DoS対策装置30は、ポート番号「20011」のポートP2を遮断する。また、ポート変換設定サーバ100は、1行目のエントリを削除する。
[シーケンスSeq11] トークン値「AT001」のアクセストークンを取得したアプリケーション21は、指定されたポート番号「20021」のアドレス「10.25.20.2:20021」宛にサービス要求を送信する。
[シーケンスSeq11a] このデータをポート番号「20021」で受信したDoS対策装置30は、アドレス変換テーブル30aを参照する。そして、受信したパケットのアドレス「10.25.20.2:20021」を、関連づけて格納されている転送先アドレス「10.25.20.2:20」に変換して転送する。この結果、パケットは、サービスサーバ43にて受信される。
[シーケンスSeq12] サービスサーバ43は、サービス要求からアクセストークンを抽出する。そして、抽出したアクセストークンが、トークンサーバ41が発行したものか否かをトークンサーバ41に問い合わせる。本具体例では、シーケンスSeq9aにてトークンサーバ41が発行したものであるため次に進む。
[シーケンスSeq13] サービスサーバ43は、サービス要求に対応するサービス処理を行い、サービス結果をアプリケーション21に応答する。
[シーケンスSeq14] アプリケーション21は、必要に応じた処理を行い、クライアント装置10に処理の結果を応答する。
なお、以下、説明を省略するが、サービス終了時においても、サービス処理に使用したポートP3を遮断する処理を行う。この処理は、前述した方法と同様の方法で行うことができる。
以上で、具体例の説明を終了する。
以上述べたように、本実施の形態のシステム1000によれば、トークンサーバ41および認証サーバ42が、ポートオープン要求をポート変換設定サーバ100に送信するようにした。そして、ポート変換設定サーバ100が、アドレス変換用データを生成し、DoS対策装置30に送信するようにした。そして、DoS対策装置30が、アドレス変換用データに含まれる受信アドレスのポートを開放するようにした。
これにより、サービスセンタ40側にポート変換機能を配置せずに、ポート番号を動的に変更することができる。従って、ポート番号の書き換えに伴うサービスセンタ40内のサーバの処理コスト(TCPソケットのオープン、クローズ等)を軽減することができる。また、サービスセンタ40側にポート変換機能を配置することが困難な場合であっても容易にサービスセンタ40のセキュリティの強化を図ることができる。
また、ポート番号を動的に変更することで、悪意のあるアプリケーションによる開放したポートの特定を困難なものとすることができる。これにより、開放するポートに対する攻撃を回避し、DoS攻撃によりサービスが提供できなくなったり、システムがダウンしたりしてしまうことを抑制することができる。
また、ポート変換設定サーバ100が、ポート番号に加え、トークン種別とトークン値とを含むポートオープン要求を受信するようにした。これにより、ポート変換設定サーバ100は、トークン種別に応じて適切な転送先のサーバを判断することができる。
また、ポート変換設定サーバ100が、次サーバ設定テーブル121aを有するようにした。これにより、転送先のサーバを容易に決定することができる。
また、ポート変換設定サーバ100が、ポートオープン要求受信時にポート管理テーブル122aのエントリを生成するようにした。これにより、ポートクローズ要求受信時に、遮断するポートを容易に決定することができる。
そして、ポートクローズ要求に応じて、ポート管理テーブル122aを参照し、ポート遮断用データを生成し、送信するようにした。これにより、DoS対策装置30は、開放したポートを遮断することができる。
さらに、アクセス権委譲のシーケンスに従ってポートの開放、遮断を行い、ポートを開いている時間を短縮するようにした。具体的には、処理を完了したサーバが、処理が完了した時点でポートクローズ要求をポート変換設定サーバ100に送信するようにした。すなわち、認証要求に対し認証成功、失敗を応答した時点、または、アクセストークン交換要求に対し応答した時点でポートクローズ要求をポート変換設定サーバ100に送信するようにした。
そして、ポート変換設定サーバ100が、当該処理に使用したポートを遮断するポート遮断用データをDoS対策装置に送信するようにした。そして、DoS対策装置30が、ポート遮断用データに含まれるポート番号のポートを遮断するようにした。
これにより、開放したポートに対する攻撃を回避し、DoS攻撃によりサービスが提供できなくなったり、システムがダウンしたりしてしまうことを抑制することができる。
また、ポート変換設定サーバ100は、ポート番号に加え、トークン値をも含むポートクローズ要求を受信するようにした。これにより、トークン単位(処理単位)でのポートの遮断が可能となる。
具体的には、システム1000が、アプリケーション21以外のアプリケーションを有しており、ユーザが、このアプリケーションにもアクセス権の委譲処理を行う場合を考える。
この場合、トークンサーバ41が、リクエストトークン発行処理を複数回行い、ポート変換設定サーバ100は、ポートオープン要求を複数回受信することになる。
要求に従ってポート変換設定サーバ100が前述した処理を行った結果、図7に示すポート管理テーブル122aのように、受信アドレスおよび転送先アドレスが同じでトークン値が異なるエントリが複数登録される。このような場合においてポートクローズ要求を受信した場合でも、ポート変換設定サーバ100は、ポート管理テーブル122aに格納したトークン値に基づいて遮断するポートを判断することができる。このように、ポート変換設定サーバ100は、複数のクライアント装置や複数のアプリケーションからの複数のポートオープン要求や複数のポートクローズ要求に応じて、DoS対策装置30のポートを開閉することができる。
<第3の実施の形態>
次に、第3の実施の形態のシステムについて説明する。
以下、第3の実施の形態のシステムについて、前述した第2の実施の形態のシステム1000との相違点を中心に説明し、同様の事項については、その説明を省略する。
第3の実施の形態のシステムは、次にアクセスするサーバのポート番号を、ポート変換設定サーバが決定する点が、第2の実施の形態と異なっている。
図19は、第3の実施の形態のポート変換設定サーバの機能を示すブロック図である。
第3の実施の形態のポート変換設定サーバ100aは、さらに、ポート番号選択部116を有している。
通信データ解析部112は、通信データ受信部111が受信したメッセージに含まれる要求を解析する。そして、当該要求が、ポート番号通知要求である場合は、ポート番号の選択処理をポート番号選択部116に依頼する。
ポート番号選択部116は、ポート番号の選択処理の依頼を受けると、受信したメッセージに含まれる送信元サーバ名、トークン種別をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして、一致するエントリの転送先アドレスを取得する。
また、ポート番号選択部116は、ポート番号を選択する。転送先アドレスと選択したポート番号とに基づいて、受信アドレスを生成する。そして、生成した受信アドレスをキーワードにして、キーワードに一致するポート管理テーブル122aのエントリを検索する。そして一致するエントリが存在すれば、再度ポート番号の選択をやり直す。一致するエントリが存在しなければ、選択したポート番号を通信データ送信部115に送る。
通信データ送信部115は、ポート番号選択部116からポート番号を受け取ると、ポート番号通知要求元のサーバに送信する。
次に、第3の実施の形態のポート変換設定処理を説明する。
図20は、第3の実施の形態のポート変換設定処理を示すフローチャートである。
[ステップS10] 通信データ解析部112は、受信したメッセージがポートクローズ要求か否かを判断する。ポートクローズ要求であれば(ステップS10のYes)、ステップS11に遷移する。ポートクローズ要求ではなければ(ステップS10のNo)、ステップS10aに遷移する。
[ステップS10a] 通信データ解析部112は、受信したメッセージがポート番号通知要求か否かを判断する。ポート番号通知要求であれば(ステップS10aのYes)、ステップS10bに遷移する。ポート番号通知要求でなければ(ステップS10aのNo)、ステップS14に遷移する。
[ステップS10b] ポート番号選択部116は、受信したメッセージに含まれる送信元サーバ名、トークン種別をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして、一致するエントリの転送先アドレスを取得する。その後、ステップS10cに遷移する。
[ステップS10c] ポート番号選択部116は、ポート番号をランダムに選択する。その後、ステップS10dに遷移する。なお、ステップS10eから遷移してきた場合、再度、ポート番号を選択する。この場合の選び方は、特に限定されず、再度ランダムに選択する、前回選択したポート番号に所定値(例えば1)を加算したポート番号を選択する等でもよい。
[ステップS10d] ポート番号選択部116は、転送先アドレスと選択したポート番号とに基づいて、受信アドレスを生成する。そして、生成した受信アドレスをキーワードにして、キーワードに一致するポート管理テーブル122aのエントリを検索する。
[ステップS10e] ポート番号選択部116は、キーワードに一致する受信アドレスが存在するか否かを判断する。一致する受信アドレスが存在する場合(ステップS10eのYes)、ステップS10cに遷移する。一致する受信アドレスが存在しない場合(ステップS10eのNo)、ステップS10fに遷移する。
[ステップS10f] ポート番号選択部116は、ステップS10cにて選択したポート番号を、通信データ送信部115に送る。通信データ送信部115は、ポート番号選択部116からポート番号を受け取ると、ポート番号通知要求元のサーバに応答する。その後、ポート変換設定処理を終了する。
以上で、第3の実施の形態のポート変換設定処理の説明を終了する。
次に、第3の実施の形態のリクエストトークン発行処理を説明する。
図21は、第3の実施の形態のリクエストトークン発行処理を説明するフローチャートである。
[ステップS22] トークンサーバ41は、リクエストトークンを発行し、アプリケーション21に送信する。その後、ステップS22aに遷移する。
[ステップS22a] トークンサーバ41は、ポート番号通知要求をポート変換設定サーバ100aに送信する。ポート変換設定サーバ100aから応答があると、ステップS24aに遷移する。
[ステップS24a] トークンサーバ41は、応答メッセージに含まれるポート番号および発行したリクエストトークンのトークン種別、トークン値、トークンサーバ41の送信元サーバ名を引数に、ポートオープン要求をポート変換設定サーバ100aに送信する。その後、ポート変換設定サーバ100aからの応答を待機する。ポート変換設定サーバ100aから応答があると、ステップS26に遷移する。
以上で第3の実施の形態のリクエストトークン発行処理の説明を終了する。
次に、第3の実施の形態の認証サーバ42の認証処理を説明する。
図22は、第3の実施の形態の認証処理を示すフローチャートである。
[ステップS36] 認証サーバ42は、認証の結果、正当なユーザIDおよびユーザパスワードである場合(ステップS36のYes)、ステップS37aに遷移する。正当なユーザIDおよびユーザパスワードではない場合(ステップS36のNo)、ステップS42に遷移する。
[ステップS37a] 認証サーバ42は、ポート番号通知要求をポート変換設定サーバ100に送信する。その後、ポート変換設定サーバ100aから応答があると、ステップS38aに遷移する。
[ステップS38a] 認証サーバ42は、応答メッセージに含まれるポート番号およびリクエストトークンのトークン種別、トークン値、認証サーバ42の送信元サーバ名を引数に、ポートオープン要求をポート変換設定サーバ100aに送信する。その後、メッセージの応答を待機する。ポート変換設定サーバ100aから応答があると、ステップS40に遷移する。
以上で、第3の実施の形態の認証処理の説明を終了する。
次に、第3の実施の形態のアクセストークン発行処理を説明する。
図23は、第3の実施の形態のアクセストークン発行処理を示すフローチャートである。
[ステップS56] トークンサーバ41は、アクセストークンを発行し、クライアント装置10に送信する。その後、ステップS57aに遷移する。
[ステップS57a] トークンサーバ41は、ポート番号通知要求をポート変換設定サーバ100に送信する。その後、ポート変換設定サーバ100aから応答があると、ステップS58aに遷移する。
[ステップS58a] トークンサーバ41は、応答メッセージに含まれるポート番号、および、アクセストークンのトークン種別、トークン値、トークンサーバ41の送信元サーバ名を引数に、ポートオープン要求をポート変換設定サーバ100aに送信する。その後、メッセージの応答を待機する。ポート変換設定サーバ100aから応答があると、ステップS60に遷移する。
以上で、第3の実施の形態のアクセストークン発行処理の説明を終了する。
次に、第3の実施の形態のシステムの全体処理の具体例を説明する。
以下、第2の実施の形態と異なる部分を中心に説明し、同様の部分は説明を省略する。
[シーケンスSeq2] クライアント装置10からサービス要求を受信したアプリケーション21は、リクエストトークン要求をトークンサーバ41に送信する。
リクエストトークン要求を受信したトークンサーバ41は、トークン値「RT001」のリクエストトークンを発行し、アプリケーション21に送信する。
次に、トークンサーバ41は、トークン種別「RT」、送信元サーバ名「トークンサーバ」を引数にポート番号をポート変換設定サーバ100に要求する。
ポート番号通知要求を受信したポート変換設定サーバ100は、トークン種別「RT」、送信元サーバ名「トークンサーバ」をキーワードに、次サーバ設定テーブル121aを検索し、転送先アドレス「10.25.20.1:10」を取得する。
次に、ポート番号をランダムに選択する。本具体例では、ポート番号「20001」を選択する。転送先アドレスとポート番号で受信アドレス「10.25.20.1:20001」を生成する。そして、ポート管理テーブル122aを参照し、生成した受信アドレスに一致する受信アドレスが存在するか否かを確認する。一致するものが無ければ、選択したポート番号「20001」を応答する。
応答を受信したトークンサーバ41は、トークン種別「RT」、トークン値「RT001」、ポート番号「20001」、送信元サーバ名「トークンサーバ」を引数に、ポートオープン要求をポート変換設定サーバ100に送信し、応答を待機する。
以降、認証サーバ42、および、トークンサーバ41が、ポート番号通知要求をポート変換設定サーバ100に送信する処理以外は、第2の実施の形態のシステム1000と同じである。
この第3の実施の形態のシステムによれば、第2の実施の形態のシステム1000と同様の効果が得られる。
そして、第3の実施の形態のシステムによれば、ポート変換設定サーバ100がポート番号を決定するようにしたので、リクエストトークン発行処理、認証処理、アクセストークン発行処理においてポート番号が重複したときの処理が不要となり、さらに、処理の簡略化を図ることができる。
<第4の実施の形態>
次に、第4の実施の形態のシステムについて説明する。
以下、第4の実施の形態のシステムについて、前述した第3の実施の形態のシステムとの相違点を中心に説明し、同様の事項については、その説明を省略する。
図24は、第4の実施の形態のポート変換設定サーバの機能を示すブロック図である。
第4の実施の形態のシステムは、ポート変換設定サーバ100bが、各サーバからのポート番号通知要求を受信した際に、以降のシーケンスで開放するポート番号を予め選択し、開放しておく点が第3の実施の形態のシステムと異なっている。
このポート番号通知要求は、トークンサーバ41が、リクエストトークン発行処理時にポート変換設定サーバ100bに送信する。そして、認証処理時およびアクセストークン発行処理時には、ポートは既に開放されているため、開放しているポート番号を問い合わせる処理を行う。
説明を補足すると、認証処理時およびアクセストークン発行処理時には、認証サーバ42およびトークンサーバ41は、ポートオープン要求をポート変換設定サーバ100bに送信しない。
ポート変換設定サーバ100bは、ポートオープン処理部113aとポート番号選択部116aとを有している。
本実施の形態のポートオープン処理部113aは、ポートオープン処理の依頼を受けると、次サーバ設定テーブル121aのエントリを検索する。そして、一致するエントリの全ての転送先アドレスを取得する。
また、ポートオープン処理部113aは、ポート番号選択部116aにポート番号の選択を依頼する。そして、選択されたポート番号と取得した転送先アドレスとに基づいて、受信アドレスを生成する。そして、ポートオープン処理部113aは、取得した転送先アドレスと生成された受信アドレスとを含むアドレス変換用データを生成する。
また、ポートオープン処理部113aは、生成した全てのアドレス変換用データに含まれる受信アドレスおよび転送先アドレスを、受信したトークンに関連づけてポート管理テーブル122aに格納する。
さらに、ポートオープン処理部113aは、ポート番号をトークンサーバ41に応答する。具体的には、ポートオープン要求に含まれるトークン種別、送信元サーバ名をキーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして一致するエントリの転送先アドレスを取得する。次に、ポート管理テーブル122aを参照し、転送先アドレスに対する受信アドレスのポート番号をトークンサーバ41に応答する。
ポート番号選択部116aは、ポートオープン処理部113aからポート番号の選択処理の依頼を受けると、ポート番号をランダムに選択する。そして、選択したポート番号をポートオープン処理部113aに通知する。
また、ポート番号選択部116aは、通信データ解析部112からポート番号の選択処理の依頼を受けると、受信したメッセージに含まれる送信元サーバ名、トークン種別をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして、一致するエントリの転送先アドレスを取得する。そして、ポート番号選択部116aは、取得した転送先アドレスをキーワードにして、ポート管理テーブル122aのエントリを検索する。そして、一致するエントリの受信アドレスのポート番号を通信データ送信部115に送る。
通信データ送信部115は、ポート番号選択部116aからポート番号を受け取ると、ポート番号通知要求元のサーバに送信する。
図25は、第4の実施の形態のポート変換設定処理を示すフローチャートである。
第4の実施の形態のポート変換設定処理は、ポートオープン要求を受信したときの処理と、ポート番号通知要求を受信したときの処理が異なっている。以下順番に説明する。
[ステップS2] 通信データ解析部112は、受信したメッセージがポートオープン要求か否かを判断する。ポートオープン要求であれば(ステップS2のYes)、ステップS3aに遷移する。ポートオープン要求ではなければ(ステップS2のNo)、ステップS10に遷移する。
[ステップS3a] ポートオープン処理部113aは、次サーバ設定テーブル121aのエントリを検索する。そして、一致するエントリの全ての転送先アドレスを取得する。その後、ステップS4aに遷移する。
[ステップS4a] ポートオープン処理部113aは、取得した全ての転送先アドレスに対するアドレス変換用データを生成する。その後、ステップS7aに遷移する。
[ステップS7a] ポートオープン処理部113aは、ステップS4aにて生成した全てのアドレス変換用データに含まれる受信アドレスおよび転送先アドレスを、受信したトークンに関連づけてポート管理テーブル122aに格納する。その後、ステップS8aに遷移する。
[ステップS8a] ポートオープン処理部113aは、通信データ送信部115を介してDoS対策装置30に全てのアドレス変換用データを送信する。これにより、DoS対策装置30は、通知された全てのアドレス変換用データに含まれる受信アドレスのポートを開放する。その後、ステップS8bに遷移する。
[ステップS8b] ポートオープン処理部113aは、ポート番号をトークンサーバ41に応答する。その後、ポート変換設定処理を終了する。
次に、ポート番号通知要求を受信したときの処理を説明する。
[ステップS10b] ポート番号選択部116aは、受信したメッセージに含まれる送信元サーバ名、トークン種別をキーワードにして、次サーバ設定テーブル121aを検索し、転送先アドレスを取得する。その後、ステップS10gに遷移する。
[ステップS10g] ポート番号選択部116aは、メッセージに含まれているトークンと、転送先アドレスとをキーワードにして、ポート管理テーブル122aを検索する。そして、キーワードに一致するエントリを取得する。その後、ステップS10hに遷移する。
[ステップS10h] ポート番号選択部116aは、取得したエントリの受信アドレスの欄に設定されているポート番号を、通信データ送信部115に送る。通信データ送信部115は、ポート番号選択部116aからポート番号を受け取ると、ポート番号通知要求元のサーバに応答する。その後、ポート変換設定処理を終了する。
以上で、第4の実施の形態のポート変換設定処理の説明を終了する。
次に、第4の実施の形態のリクエストトークン発行処理を説明する。
図26は、第4の実施の形態のリクエストトークン発行処理を説明するフローチャートである。
[ステップS22] トークンサーバ41は、リクエストトークンを発行し、アプリケーション21に送信する。その後、ステップS24bに遷移する。
[ステップS24b] トークンサーバ41は、トークン種別、トークン値、送信元サーバ名を引数に、ポートオープン要求をポート変換設定サーバ100bに送信する。その後、ポート変換設定サーバ100bからの応答を待機する。ポート変換設定サーバ100bから応答があると、ステップS26に遷移する。
以上で第4の実施の形態のリクエストトークン発行処理の説明を終了する。
このように、本実施の形態ではポートオープン処理でポート番号を選択するため、リクエストトークン発行処理において、ポート番号通知要求を省略することができる。
次に、第4の実施の形態の認証サーバ42の認証処理を説明する。
図27は、第4の実施の形態の認証処理を示すフローチャートである。
[ステップS36] 認証サーバ42は、認証の結果、正当なユーザIDおよびユーザパスワードである場合(ステップS36のYes)、ステップS37bに遷移する。正当なユーザIDおよびユーザパスワードではない場合(ステップS36のNo)、ステップS42に遷移する。
[ステップS37b] 認証サーバ42は、トークン種別、トークン値、送信元サーバ名を引数に、ポート番号通知要求をポート変換設定サーバ100aに送信する。その後、ポート変換設定サーバ100bから応答があると、ステップS40に遷移する。
以上で、第4の実施の形態の認証処理の説明を終了する。
このように、本実施の形態ではポートが既に開放されているので、認証処理において、ポートオープン要求を省略することができる。
次に、第4の実施の形態のアクセストークン発行処理を説明する。
図28は、第4の実施の形態のアクセストークン発行処理を示すフローチャートである。
[ステップS56] トークンサーバ41は、アクセストークンを発行し、クライアント装置10に送信する。その後、ステップS57bに遷移する。
[ステップS57b] トークンサーバ41は、トークン種別、トークン値、送信元サーバ名を引数に、ポート番号通知要求をポート変換設定サーバ100bに送信する。その後、ポート変換設定サーバ100bから応答があると、ステップS60に遷移する。
以上で、第4の実施の形態のアクセストークン発行処理の説明を終了する。
このように、本実施の形態ではポートが既に開放されているので、アクセストークン発行処理において、ポートオープン要求を省略することができる。
次に、第4の実施の形態のシステムの全体処理の具体例を説明する。
以下、図3にて説明したシーケンスと同じシーケンスには、同じシーケンス番号を附している。
[シーケンスSeq1] クライアント装置10は、アプリケーション21にサービス要求を送信する。
[シーケンスSeq2] クライアント装置10からサービス要求を受信したアプリケーション21は、トークンサーバ41にリクエストトークン要求を送信する。
リクエストトークン要求を受信したトークンサーバ41は、トークン値「RT001」のリクエストトークンを発行し、アプリケーション21に送信する。
次に、トークン種別「RT」、トークン値「RT001」、送信元サーバ名「トークンサーバ」を引数に、ポートオープン要求をポート変換設定サーバ100aに送信し、応答を待機する。
ポートオープン要求を受信したポート変換設定サーバ100bは、次サーバ設定テーブル121aを検索し、次サーバ設定テーブルに格納されている全ての転送先アドレス「10.25.20.1:10」、「10.25.20.2:20」、「10.25.20.3:30」を取得する。
次に、ポート番号をランダムに選択し、転送先アドレスに対するアドレス変換用データを生成する。
本具体例では、ポート番号「20001、20021、20011」を選択する。そして、(1)受信アドレス「10.25.10.1:20001」、転送先アドレス「10.25.10.1:10」、(2)受信アドレス「10.25.20.2:20021」、転送先アドレス「10.25.20.2:20」、(3)受信アドレス「10.25.20.3:20011」、転送先アドレス「10.25.20.3:30」を生成する。そして、上記(1)を含むアドレス変換用データと、上記(2)を含むアドレス変換用データと、上記(3)を含むアドレス変換用データを生成する。
そして、生成したアドレス変換用データをDoS対策装置30に送信する。これにより、DoS対策装置30は、受信アドレスのポート番号のポートを開放する。また、上記(1)、(2)、(3)における受信アドレスと転送先アドレスの組み合わせをそれぞれアドレス変換テーブル30aに記憶する。
また、ポート変換設定サーバ100bは、上記(1)〜(3)をトークン値「RT001」に関連づけたエントリをポート管理テーブル122aに登録する。
図29は、第4の実施の形態の具体例のポート管理テーブルを示す図である。
さらに、ポート変換設定サーバ100bは、選択したポート番号をトークンサーバ41に応答する。このとき応答するポート番号は、以下のように選択する。
まず、トークン種別「RT」、送信元サーバ名「トークンサーバ」をキーワードにして、一致する次サーバ設定テーブル121aのエントリを検索する。そして一致するエントリの転送先アドレス「10.25.20.1:10」を取得する。
次に、ポート変換設定サーバ100bは、図28に示すポート管理テーブル122aを参照し、転送先アドレス「10.25.20.1:10」に対する受信アドレスのポート番号「20001」を取得する。取得したポート番号を、トークンサーバ41に応答するポート番号として選択する。
[シーケンスSeq3] 応答を取得したトークンサーバ41は、応答メッセージにリクエストトークンのトークン値「RT001」と、ポート番号「20001」を格納してアプリケーション21に応答する。
[シーケンスSeq4] 応答を受信したアプリケーション21は、受信したリクエストトークンのトークン値「RT001」とポート番号「20001」をキーワードに、クライアント装置10に許可要求を送信する。
[シーケンスSeq5] クライアント装置10は、アクセス許可設定のため、指定されたポート番号「20001」のアドレス「10.25.20.1:20001」宛に、受信したリクエストトークンのトークン値「RT001」とユーザIDとユーザパスワードとを格納したパケットを送信する。
このデータをポート番号「20001」で受信したDoS対策装置30は、アドレス変換テーブル30aを参照する。そして、受信したパケットの宛先アドレス「10.25.20.1:20001」を、関連づけて格納されている転送先アドレス「10.25.20.1:10」に変換して転送する。この結果、パケットは、認証サーバ42にて受信される。
認証サーバ42は、受信したパケットからリクエストトークンのトークン値「RT001」を抽出し、トークンサーバ41に発行したものかを問い合わせる。本具体例では、シーケンスSeq2にてトークンサーバ41が発行したものであるため、次に進む。
次に、認証サーバ42は、ユーザIDとユーザパスワードのチェックを行う。本具体例では、正しいユーザであるため、トークン値「RT001」、トークン種別「RT」、送信元サーバ名「認証サーバ」を引数に、ポート番号通知要求をポート変換設定サーバ100に送信する。
ポート番号通知要求を受信したポート変換設定サーバ100bは、送信元サーバ名「認証サーバ」とトークン種別「RT」をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして、一致する転送先アドレス「10.25.20.3:30」を取得する。
次に、トークン値「RT001」と転送先アドレス「10.25.20.3:30」をキーワードにして、キーワードに一致する図28に示すポート管理テーブル122aのエントリを検索する。そして、一致する3行目のエントリの受信アドレスのポート番号「20011」を応答する。
[シーケンスSeq6] 応答を取得した認証サーバ42は、応答メッセージにリクエストトークンのトークン値「RT001」とポート番号「20011」とを格納した認証成功をクライアント装置10に応答する。
クライアント装置10への応答後、トークン値「RT001」、送信元アドレス「10.25.20.1:10」を引数に、ポートクローズ要求を、ポート変換設定サーバ100bに送信する。
ポートクローズ要求を受信したポート変換設定サーバ100bは、トークン値「RT001」、送信元アドレス「10.25.20.1:10」をキーワードにして、キーワードに一致する図29に示すポート管理テーブル122aのエントリを検索する。そして一致する1行目のエントリを取得する。
そして、ポート変換設定サーバ100bは、受信アドレス「10.25.20.1:20001」を有するポート遮断用データを生成する。そして、生成したポート遮断用データをDoS対策装置30に送信する。これにより、DoS対策装置30は、ポート番号「20001」のポートP1を遮断する。
[シーケンスSeq7] 認証成功を受信したクライアント装置10は、トークン値「RT001」とポート番号「20011」を引数に許可完了をアプリケーション21に応答する。
[シーケンスSeq8] 応答を受信したアプリケーション21は、のアドレス「10.25.20.3:20011」宛に、トークン値「RT001」を格納したアクセストークン交換要求を送信する。
アクセストークン交換要求をポート番号「20011」で受信したDoS対策装置30は、アドレス変換テーブル30aを参照する。そして、受信したパケットの宛先アドレス「10.25.20.3:20011」を、関連づけて格納されている転送先アドレス「10.25.20.3:30」に変換して転送する。この結果、パケットは、トークンサーバ41にて受信される。
アクセストークン交換要求を受信したトークンサーバ41は、要求メッセージからリクエストトークンのトークン値「RT001」を抽出し、トークンサーバ41が発行したものか否かをチェックする。本具体例では、シーケンスSeq2にてトークンサーバ41が発行したものであるので次に進む。
[シーケンスSeq9] トークンサーバ41は、リクエストトークンが認証されているか否かを認証サーバ42に問い合わせる。本具体例では、認証されているため次に進む。
次に、トークンサーバ41は、トークン値「AT001」のアクセストークンを発行し、クライアント装置10に送信する。そして、トークン種別「AT」、トークン値「RT001」、送信元サーバ名「トークンサーバ」を引数に、ポート番号通知要求をポート変換設定サーバ100bに送信し、応答を待機する。
ポート番号通知要求を受信したポート変換設定サーバ100bは、送信元サーバ名「トークンサーバ」とトークン種別「AT」とをキーワードに、次サーバ設定テーブル121aを検索し、転送先アドレス「10.25.20.2:20」を取得する。
次に、ポート変換設定サーバ100bは、トークン値「RT001」と転送先アドレス「10.25.20.2:20」をキーワードにして、キーワードに一致する図28に示すポート管理テーブル122aのエントリを検索する。そして、一致する2行目のエントリの受信アドレスのポート番号「20021」を応答する。
[シーケンスSeq10] 応答を取得したトークンサーバ41は、トークン値「AT001」のアクセストークンと、ポート番号「20021」を応答メッセージに格納してクライアント装置10に応答する。
クライアント装置10への応答後、トークンサーバ41は、トークン値「RT001」、送信元アドレス「10.25.20.3:30」を引数に、ポートクローズ要求を、ポート変換設定サーバ100bに送信する。
ポートクローズ要求を受信したポート変換設定サーバ100bは、トークン値「RT001」、送信元アドレス「10.25.20.3:30」をキーワードにして、キーワードに一致する図28に示すポート管理テーブル122aのエントリを検索する。そして一致する3行目のエントリを取得する。
ポート変換設定サーバ100bは、受信アドレス「10.25.20.3:20011」を有するポート遮断用データを生成する。
そして、ポート変換設定サーバ100bは、このポート遮断用データ154をDoS対策装置30に送信する。これにより、DoS対策装置30は、ポート番号「20011」のポートP2を遮断する。
[シーケンスSeq11] トークン値「AT001」のアクセストークンを取得したアプリケーション21は、指定されたポート番号「20021」のアドレス「10.25.20.2:20021」宛にサービス要求を送信する。
サービス要求をポート番号「20021」で受信したDoS対策装置30は、アドレス変換テーブル30aを参照する。そして、受信したパケットのアドレス「10.25.20.2:20021」を、関連づけて格納されている転送先アドレス「10.25.20.2:20」に変換して転送する。結果、パケットは、サービスサーバ43にて受信される。
[シーケンスSeq12] サービスサーバ43は、サービス要求からアクセストークンを抽出する。そして、抽出したアクセストークンが、トークンサーバ41が発行したものか否かをトークンサーバ41に問い合わせる。本具体例では、シーケンスSeq9aにてトークンサーバ41が発行したものであるため次に進む。
[シーケンスSeq13] サービスサーバ43は、サービス要求に対応するサービス処理を行い、サービス結果をアプリケーション21に応答する。
[シーケンスSeq14] アプリケーション21は、必要に応じた処理を行い、クライアント装置10に処理の結果を応答する。
この第4の実施の形態のシステムによれば、第3の実施の形態のシステムと同様の効果が得られる。
そして、第4の実施の形態のシステムによれば、さらに、ポート番号の選択およびポートの設定に要する時間を短縮することができる。
<第5の実施の形態>
次に、第5の実施の形態のシステムについて説明する。
以下、第5の実施の形態のシステムについて、前述した第2の実施の形態のシステムとの相違点を中心に説明し、同様の事項については、その説明を省略する。
図30は、第5の実施の形態のポート変換設定サーバの機能を示すブロック図である。
第5の実施の形態のシステムは、ポート変換設定サーバ100cが、ポートオープン要求を受信後、一定時間が経過しても当該トークンに関するポートクローズ要求を受信しない場合に、ポートを遮断する機能を備えている。
第5の実施の形態のポート変換設定サーバ100cのCPU11は、さらに、エントリ監視部117を有している。また、記憶部12は、さらに、パラメータ管理情報格納部124を有している。
図31は、第5の実施の形態のポート管理テーブルのデータ構造例を示す図である。
ポート管理テーブル122bは、ポート管理テーブル122aと比較して、さらに、登録時刻の欄が設けられている。この登録時刻の欄には、当該エントリをポート管理テーブル122bに登録した時刻が、例えば、秒単位で設定される。
再び図30に戻って説明する。
エントリ監視部117は、ポート管理テーブル122bをエントリ単位で監視する。そして、予め設定した削除時間が経過しても削除されないエントリが存在する場合、このエントリに含まれている受信アドレスを含むポート遮断用データを生成する。エントリ監視部117は、生成したアドレス変換用データを通信データ送信部115に送る。
このエントリ監視部117は、ポート変換設定サーバ100cの起動後、ポートオープン要求/ポートクローズ要求を受信する処理と並行して動作するのが好ましい。例えば別スレッドや別プロセスとすることで動作することができる。
パラメータ管理情報格納部124には、エントリ監視部117がポートクローズ要求の受信を監視する間隔を決定する時間が、予め設定されて格納されている。
図32は、第5の実施の形態のパラメータ管理テーブルのデータ構造例を示す図である。
パラメータ管理テーブル124aには、パラメータ、値の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
パラメータの欄には、パラメータとして管理する項目が設定される。図31では、削除時間とテーブル監視間隔が設定されている。
削除時間は、所定時間内にポートクローズ要求を受信しなかったポート管理テーブル122bのエントリを削除する時間を管理するための項目である。
テーブル監視間隔は、ポート管理テーブル122bを監視する時間の間隔を管理するための項目である。
値の欄には、パラメータの欄に設定された項目を実行する時間が設定されている。図32では、ポート管理テーブル122bからエントリを削除する時間である120秒が設定されている。また、図32では、ポート管理テーブル122bを監視する時間の間隔である60秒が設定されている。
すなわち、図32に示すパラメータ管理テーブル124aは、エントリ監視部117が、60秒間隔でポート管理テーブル122bを監視することを示している。そして、エントリが登録されてから120秒間に通信データ受信部111がポートクローズ要求を受信しなかった場合、当該エントリを削除することを示している。
図33は、第5の実施の形態のポート変換設定処理を示すフローチャートである。
[ステップS6] ポートオープン処理部113は、アドレスが重複していないことを、ポートオープン要求を送信したサーバに応答する。その後、ステップS7bに遷移する。
[ステップS7b] ポートオープン処理部113は、ステップS4にて生成したアドレス変換用データに含まれる受信アドレスおよび転送先アドレスを、受信したトークンに関連づけてポート管理テーブル122bに格納する。このとき、アドレス変換用データをポート管理テーブル122bに登録した時刻を登録時刻の欄に設定する。その後、ステップS8に遷移する。
以上で、第5の実施の形態のポート変換設定処理の説明を終了する。
次に、エントリ監視部117の処理(エントリ監視処理)を説明する。
図34は、エントリ監視処理を示すフローチャートである。
[ステップS81] ポート変換設定サーバ100cが起動すると、ステップS82に遷移する。
[ステップS82] エントリ監視部117は、パラメータ管理テーブル124aを参照し、テーブル監視間隔の値の欄に設定された時間だけスリープ(待機)する。スリープ時間が経過するとステップS83に遷移する。
[ステップS83] エントリ監視部117は、エントリ毎に削除時間が経過したか否かを判断する。具体的には、現在時刻からポート管理テーブル122bの登録時刻を減算した時間が、パラメータ管理テーブル124aの削除時間の値の欄に設定された時間より大きいか否かを判断する。現在時刻からポート管理テーブル122bの登録時刻を減算した時間が、パラメータ管理テーブル124aの削除時間の値の欄に設定された時間より大きいエントリが存在する場合(ステップS83のYes)、ステップS84に遷移する。現在時刻からポート管理テーブル122bの登録時刻を減算した時間が、パラメータ管理テーブル124aの削除時間の値の欄に設定された時間以下であるエントリが存在しない場合(ステップS83のNo)、ステップS82に遷移する。
[ステップS84] エントリ監視部117は、当該エントリに含まれている受信アドレスを含むポート遮断用データを生成する。そして、生成したポート遮断用データを、通信データ送信部115を介してDoS対策装置30に送信する。その後、ステップS85に遷移する。
[ステップS85] エントリ監視部117は、当該エントリをポート管理テーブル122aから削除する。その後、ステップS82に遷移する。
以上で、エントリ監視処理の説明を終了する。
次に、第5の実施の形態のシステムの処理の具体例を説明する。
なお、本具体例では、第2の実施の形態のポート変換設定処理とは異なる部分を中心に説明し、同様の部分についてはその説明を省略する。
[シーケンスSeq1] まず、クライアント装置10は、サービス要求をアプリケーション21に送信する。
[シーケンスSeq2] クライアント装置10からサービス要求を受信したアプリケーション21は、リクエストトークン要求をトークンサーバ41に送信する。
リクエストトークン要求を受信したトークンサーバ41は、トークン値「RT001」のリクエストトークンを発行し、アプリケーション21に送信する。そして、アプリケーション21からのアクセスを許可するポート番号をランダムに選択する。本具体例では、「20001」とする。
トークンサーバ41は、発行したトークンのトークン種別「RT」、トークン値「RT001」、ポート番号「20001」、送信元サーバ名「トークンサーバ」を引数に、ポートオープン要求をポート変換設定サーバ100cに送信し、応答を待機する。
ポートオープン要求を受信したポート変換設定サーバ100cは、メッセージに含まれている送信元サーバ名「トークンサーバ」とトークン種別「RT」をキーワードにして、キーワードに一致する次サーバ設定テーブル121aのエントリを検索する。そして一致するエントリの転送先アドレス「10.25.20.1:10」を取得する。
次に、ポート変換設定サーバ100cは、取得した転送用アドレス「10.25.20.1:10」と通知されたポート番号「20001」より、受信アドレス「10.25.20.1:20001」を生成する。そして、受信アドレス「10.25.20.1:20001」と転送先アドレス「10.25.20.1:10」とを含むアドレス変換用データを生成する。
そして、ポート変換設定サーバ100cは、ポート管理テーブル122bを参照し、生成した受信アドレスが、既に生成した受信アドレスに重複しているか否かをチェックする。重複していないため、ポート変換設定サーバ100cは、アドレス変換用データをDoS対策装置30に送信する。
また、ポート管理テーブル122bに、受信アドレス「10.25.20.1:20001」と転送先アドレス「10.25.20.1:10」をトークン値「RT001」に関連づけたエントリをポート管理テーブル122bに設定する。このエントリの登録時刻は、「10:30:00」とする。
また、ポート変換設定サーバ100は、「重複OK」をトークンサーバ41に応答する。
以降、ポート管理テーブル122bにエントリを登録する際に、登録時刻も合わせて設定する以外は第2の実施の形態と同じシーケンスを行う。
一方、ポート変換設定サーバ100aのエントリ監視部117は、上記の動作とは独立してエントリ監視処理を実行し、定期的にポート管理テーブル122bのエントリを監視する。すなわち、起動後、パラメータ管理テーブル124aのテーブル監視間隔である「60秒」間スリープし、その後、現在時刻と、ポート管理テーブルの登録時刻「10:30」との差分を計算する。それが、削除時間「120秒」よりも大きい場合、すなわち、10:32:00以降である場合は、受信アドレス「10.25.20.1:20001」を有するポート遮断用データ152を生成する。そして、生成したポート遮断用データをDoS対策装置30に送信する。また、エントリ監視部117は、当該エントリを削除する。
この第5の実施の形態のシステムによれば、第2の実施の形態のシステム1000と同様の効果が得られる。
そして、第5の実施の形態のシステムによれば、さらに、処理が放置されることによるポート管理テーブル122bやアドレス変換テーブル30aの容量の増大を抑制することができる。なお、処理が放置されるケースとしては、例えば、クライアント装置10が許可要求を送信しない(ユーザが認証処理をしない)等が挙げられる。
<第6の実施の形態>
次に、第6の実施の形態のシステムについて説明する。
以下、第6の実施の形態のシステムについて、前述した第5の実施の形態のシステムとの相違点を中心に説明し、同様の事項については、その説明を省略する。
第6の実施の形態のシステムは、サービスセンタ40内のサーバを監視し、サーバが停止している等、サーバの応答がないことを検出すると、当該サーバを転送先アドレスとするポート管理テーブル122bの登録時刻を現在時刻に設定する点が異なっている。
図35は、第6の実施の形態のポート変換設定サーバの機能を示すブロック図である。
第6の実施の形態のポート変換設定サーバ100dは、さらに、サーバ監視部118を有している。
サーバ監視部118は、ポート管理テーブル122bの転送先アドレスの欄に設定されている転送先アドレスのサーバの応答を監視する。この処理は、例えば、ping(Packet Internet Groper)等により行うことができる。
そして、応答がないサーバが存在する場合には、応答がないサーバを転送先アドレスとするエントリの登録時刻の欄の時刻を、現在時刻に書き換える。これにより、現在時刻からポート管理テーブル122bの登録時刻を減算した時間が「0」になる。すなわち、ポートオープン要求を受信し、登録時刻がエントリに登録されてからの時間の経過のカウントがリセットされる。このため、エントリ監視処理にて、サーバの停止に起因して当該エントリについてポート遮断用情報が生成されることが抑制される。
このサーバ監視部118は、ポート変換設定サーバ100dの起動後、ポートオープン要求/ポートクローズ要求を受信する処理と並行して動作するのが好ましい。例えば別スレッドや別プロセスとすることで動作することができる。
図36は、第6の実施の形態のパラメータ管理テーブルのデータ構造例を示す図である。
パラメータ管理テーブル124bには、パラメータ管理テーブル124aと比較して、さらに、項目としてサーバ監視間隔が設定されている。
サーバ監視間隔は、各サーバの停止を監視する時間の間隔を管理するための項目である。
次に、サーバ監視部118の処理(サーバ監視処理)を説明する。
図37は、サーバ監視処理を示すフローチャートである。
[ステップS91] ポート変換設定サーバ100dが起動すると、ステップS92に遷移する。
[ステップS92] サーバ監視部118は、パラメータ管理テーブル124bを参照し、サーバ監視間隔の値の欄に設定された時間だけスリープ(待機)する。スリープ時間が経過するとステップS93に遷移する。
[ステップS93] サーバ監視部118は、次サーバ設定テーブル121aを検索し、全ての転送先アドレスを取得する。その後、ステップS94に遷移する。
[ステップS94] サーバ監視部118は、取得した転送先アドレスを1つ選択する。そして、選択したサーバに応答の有無を問い合わせる。
[ステップS95] サーバ監視部118は、問い合わせたサーバから応答があったか否かを判断する。応答があれば(ステップS95のYes)、ステップS97に遷移する。応答がなければ(ステップS95のNo)、ステップS96に遷移する。
[ステップS96] サーバ監視部118は、ポート管理テーブル122bの転送先アドレスと、問い合わせたアドレスが一致するエントリの登録時刻を現在時刻に設定する。その後、ステップS97に遷移する。
[ステップS97] サーバ監視部118は、取得した全てのサーバアドレスについて、問い合わせを行ったか否かを判断する。取得した全てのサーバアドレスについて、問い合わせを行った場合(ステップS97のYes)、ステップS92に遷移する。取得した全てのサーバアドレスについて、問い合わせを行っていない場合(ステップS97のNo)、ステップS94に遷移する。
以上で、サーバ監視処理の説明を終了する。
この第6の実施の形態のシステムによれば、第5の実施の形態のシステムと同様の効果が得られる。
そして、第6の実施の形態のシステムによれば、例えば、トークンサーバ41または認証サーバ42の停止時にエントリ監視部117が、ポート管理テーブル122bのエントリを削除することを抑制することができる。従って、アクセス権限の委譲処理の途中にサーバの停止に起因して委譲処理が失敗することを抑制することができる。
<第7の実施の形態>
次に、第7の実施の形態のシステムについて説明する。
以下、第7の実施の形態のシステムについて、前述した第2の実施の形態のシステムとの相違点を中心に説明し、同様の事項については、その説明を省略する。
第7の実施の形態のシステムは、ポート変換設定サーバが、DoS対策装置30にアドレス変換設定されたポートに対し、最初に到着したクライアント装置10のIPアドレスのみを通過させる点が第2の実施の形態のシステムと異なっている。
図38は、第7の実施の形態のアドレス変換テーブルのデータ構造例を示す図である。
アドレス変換テーブル30bには、受信側Srcアドレス、受信アドレス、転送先アドレスの欄が設けられており、各欄の横方向に並べられた情報同士が互いに関連づけられている。
受信側Srcアドレスの欄には、受信アドレスの欄に設定されている受信アドレスに対し、最初にアクセスした装置のIPアドレスが設定されている。未だアクセスされていない場合「Null」が設定される。例えば、図37に示すアドレス変換テーブル30bでは、1行目のエントリの受信アドレスには、未だ装置からアクセスが存在しないことを示している。また、2行目のエントリの受信アドレスには、IPアドレス「133.10.45.10」の装置がアクセスしたことを示している。
受信アドレスおよび転送先アドレスの欄には、アドレス変換テーブル30aと同様の情報が設定される。
次に、第7の実施の形態のDoS対策装置30のパケット処理を説明する。
図39は、第7の実施の形態のDoS対策装置のパケット処理を示すフローチャートである。
[ステップS101] DoS対策装置30は、パケットを受信すると、ステップS102に遷移する。
[ステップS102] DoS対策装置30は、受信したパケットに含まれる宛先アドレスに一致する受信アドレスを有するエントリが、アドレス変換テーブル30bに存在するか否かを判断する。一致する受信アドレスを有するエントリが、アドレス変換テーブル30bに存在する場合(ステップS102のYes)、ステップS103に遷移する。一致する受信アドレスを有するエントリが、アドレス変換テーブル30bに存在しない場合(ステップS102のNo)、ステップS107に遷移する。
[ステップS103] DoS対策装置30は、一致する受信アドレスを有するエントリの受信側Srcアドレスの欄がNullに設定されているか否かを判断する。受信側Srcアドレスの欄がNullに設定されている場合(ステップS103のYes)、ステップS104に遷移する。受信側Srcアドレスの欄がNullに設定されていない場合(ステップS103のNo)、ステップS106に遷移する。
[ステップS104] DoS対策装置30は、受信したパケットを送信した装置のIPアドレスを、一致する受信アドレスを有するエントリの受信側Srcアドレスの欄に設定し、アドレス変換テーブル30bを上書きする。その後、ステップS105に遷移する。
[ステップS105] DoS対策装置30は、パケットの宛先アドレスを転送先アドレスに変換する。そして、そのパケットを転送先アドレスに転送する。その後、パケット処理を終了する。
[ステップS106] DoS対策装置30は、一致する受信アドレスを有するエントリの受信側Srcアドレスが、パケットを送信した装置のIPアドレスと一致するか否かを判断する。一致する場合(ステップS106のYes)、ステップS105に遷移する。一致しない場合(ステップS106のNo)、ステップS107に遷移する。
[ステップS107] DoS対策装置30は、受信したパケットを廃棄する。その後、パケット処理を終了する。
以上で、パケット処理の説明を終了する。
次に、図37に示すアドレス変換テーブル30bを用いて第7の実施の形態のシステムの具体例を説明する。本具体例では、クライアント装置10のIPアドレスを、IPアドレス「133.10.45.5」とする。
なお、本具体例では、第2の実施の形態のポート変換設定処理とは異なる部分を中心に説明し、同様の部分についてはその説明を省略する。
[シーケンスSeq5] クライアント装置10は、アクセス許可設定のため、指定されたポート番号「20001」宛に、リクエストトークンのトークン値「RT001」とユーザIDとユーザパスワードを格納したパケットを送信する。
このパケットを受信したDoS対策装置30は、パケットの宛先アドレス「10.25.20.1:20001」に一致する受信アドレスを有するエントリがアドレス変換テーブル30bに存在するかを確認する。本具体例では、1行目のエントリが存在するため、次に、そのエントリの受信側SrcアドレスがNullかどうかを確認する。
本具体例ではNullとなっているため、アドレス変換テーブル30bの受信側Srcアドレスの欄にクライアント装置10のIPアドレス「133.10.45.5」を登録する。
次にパケットの宛先アドレスを、そのエントリの転送先アドレス「10.25.20.1:10」に変換して送信する。この結果、「10.25.20.1:20001」で受信したパケットは、「10.25.20.1:10」に変換されて転送されることになり、認証サーバ42にて受信される。
このような処理を行うことにより、クライアント装置10のIPアドレス「133.10.45.5」が登録された後にクライアント装置10以外の装置から当該受信アドレス宛のパケットを受信した場合、DoS対策装置30は、そのパケットを廃棄する。従って、開放されているポートに対し、最初にアクセスしたパケット以外のパケットが、サービスセンタ40に転送されることを抑制することができる。
なお、本実施の形態では、最初にアクセスしたパケットを送信した装置のIPアドレスを、受信側Srcアドレスの欄に設定した。しかし、これに限定されず、同じ装置から複数回アクセスがあった時点で、この装置のIPアドレスを受信側Srcアドレスの欄に設定するようにしてもよい。
<第8の実施の形態>
次に、第8の実施の形態のシステムについて説明する。
以下、第8の実施の形態のシステムについて、前述した第7の実施の形態のシステムとの相違点を中心に説明し、同様の事項については、その説明を省略する。
図40は、第8の実施の形態のポート変換設定サーバの機能を示すブロック図である。
第8の実施の形態のシステムは、トークンサーバ41または認証サーバ42に対し、不当な要求が届いたときは、ポート変換設定サーバ100eが、アドレス変換テーブル30bの受信側Srcアドレスに設定したIPアドレスを削除する。
なお、不当な要求としては、例えば、有効でないトークンや、アクセス権が設定されてないトークンが付与された要求や、ユーザIDとユーザパスワードのいずれか一方または両方が誤っている認証要求等が挙げられる。
ポート変換設定サーバ100eは、さらに、チェックエラー処理部119を有している。
通信データ解析部112は、通信データ受信部111が受信したメッセージに含まれる要求を解析する。そして、当該要求が、トークンサーバ41または認証サーバ42が通知するチェックエラーである場合は、チェックエラー処理をチェックエラー処理部119に依頼する。
チェックエラー処理部119は、通信データ解析部112からチェックエラー処理の依頼を受けると、メッセージに含まれるサーバのアドレスをキーワードにして、キーワードに一致するポート管理テーブル122aのエントリを取得する。
そして、一致するエントリについてのアドレス変換テーブル30bの受信側Srcアドレスの欄を「Null」にする指示をDoS対策装置30に送信する。
次に、第8の実施の形態のポート変換設定処理を説明する。
図41は、第8の実施の形態のポート変換設定処理を示すフローチャートである。
[ステップS10] 通信データ解析部112は、受信したメッセージがポートクローズ要求か否かを判断する。ポートクローズ要求であれば(ステップS10のYes)、ステップS11に遷移する。ポートクローズ要求ではなければ(ステップS10のNo)、ステップS10iに遷移する。
[ステップS10i] 通信データ解析部112は、受信したメッセージがチェックエラー通知か否かを判断する。チェックエラー通知であれば(ステップS10iのYes)、ステップS10jに遷移する。チェックエラー通知ではなければ(ステップS10iのNo)、ステップS14に遷移する。
[ステップS10j] チェックエラー処理部119は、チェックエラー通知に含まれているサーバのアドレスをキーワードにして、キーワードに一致するポート管理テーブル122aの転送先アドレスを検索する。そして、一致するエントリを取得する。該当するエントリが複数の場合もある。その後、ステップS10kに遷移する。
[ステップS10k] チェックエラー処理部119は、取得したエントリの受信アドレスと転送先アドレスと一致するアドレス変換テーブル30bのエントリの受信側Srcアドレスを「Null」にする指示をDoS対策装置30に送信する。その後、ポート変換設定処理を終了する。
以上で、第8の実施の形態のポート変換設定処理の説明を終了する。
次に、第8の実施の形態の認証処理を説明する。
図42は、第8の実施の形態の認証処理を示すフローチャートである。
[ステップS34] 認証サーバ42は、トークンサーバ41からの応答により、抽出したリクエストトークンが、トークンサーバ41が発行したリクエストトークンであるか否かを判断する。トークンサーバ41が発行したリクエストトークンである場合(ステップS34のYes)、ステップS35に遷移する。トークンサーバ41が発行したリクエストトークンではない場合(ステップS34のNo)、ステップS41aに遷移する。
[ステップS36] 認証サーバ42は、認証の結果、正当なユーザIDおよびユーザパスワードである場合(ステップS36のYes)、ステップS37に遷移する。正当なユーザIDおよびユーザパスワードではない場合(ステップS36のNo)、ステップS41aに遷移する。
[ステップS41a] 認証サーバ42は、当該認証サーバ42のアドレスを引数に、チェックエラー通知をポート変換設定サーバ100dに送信する。その後、ステップS42に遷移する。
以上で、第8の実施の形態の認証処理の説明を終了する。
次に、第8の実施の形態のアクセストークン発行処理を説明する。
図43は、第8の実施の形態のアクセストークン発行処理を示すフローチャートである。
[ステップS53] トークンサーバ41は、抽出したリクエストトークンが、トークンサーバ41が発行したものか否かを判断する。トークンサーバ41が発行したものである場合(ステップS53のYes)、ステップS54に遷移する。トークンサーバ41が発行したものではない場合(ステップS53のNo)、ステップS61aに遷移する。
[ステップS55] トークンサーバ41は、問い合わせの結果、ユーザがアクセス許可設定しているという通知を受信した場合(ステップS55のYes)、ステップS56に遷移する。ユーザがアクセス許可設定していないという通知を受信した場合(ステップS55のNo)、ステップS61aに遷移する。
[ステップS61a] トークンサーバ41は、当該トークンサーバ41のアドレスを引数に、チェックエラー通知をポート変換設定サーバ100dに送信する。その後、ステップS62に遷移する。
以上で、第8の実施の形態のアクセストークン発行処理の説明を終了する。
次に、図38に示すアドレス変換テーブル30bを用いて第8の実施の形態のシステムの具体例を説明する。本具体例では、クライアント装置10を操作するユーザ以外のユーザ(正当でないユーザ)からアクセスがあった場合の処理を説明する。
なお、本具体例では、第2の実施の形態のポート変換設定処理とは異なる部分を中心に説明し、同様の部分についてはその説明を省略する。
以下、正当でないユーザが操作するクライアント装置(以下、「第三者クライアント装置」と言う)のIPアドレスを、IPアドレス「133.10.45.99」とする。
[シーケンスSeq5] 第三者クライアント装置は、アクセス許可設定のため、ポート番号「20001」宛に、リクエストトークンのトークン値「RT001」とユーザIDとユーザパスワードを格納したパケットを送信する。
このパケットを受信したDoS対策装置30は、パケットの宛先アドレス「10.25.20.1:20001」に一致する受信アドレスのエントリが、アドレス変換テーブル30bに存在するか否かを判断する。本具体例では存在するため、次に、そのエントリの受信側Srcアドレスが「Null」か否かを判断する。
本具体例では「Null」となっているため、アドレス変換テーブル30bの当該エントリの受信側Srcアドレスの欄に第三者クライアント装置のIPアドレス「133.10.45.99」を登録する。
次にパケットの宛先アドレスを、そのエントリの転送先アドレス「10.25.20.1:10」に変換して送信する。この結果、「10.25.20.1:20001」で受信したパケットは、「10.25.20.1:10」に変換されて転送されることになり、認証サーバ42にて受信される。
次に、認証サーバ42は、要求メッセージからリクエストトークンのトークン値「RT001」を抽出し、トークンサーバ41が発行したリクエストトークンか否かをトークンサーバ41に問い合わせる。本具体例では、トークンサーバ41が発行したものであるため、次に進む。
次に、認証サーバ42は、ユーザIDとユーザパスワードの認証チェックを行う。本具体例では、正当でないユーザであるため認証しない。認証サーバ42は、認証サーバ42のアドレス「10.25.20.1:10」を引数に、チェックエラー通知をポート変換設定サーバ100eに送信する。また、第三者クライアント装置に認証エラーを応答し、応答を待機する。
チェックエラー通知を受信したポート変換設定サーバ100eは、通知に含まれている認証サーバ42のアドレス「10.25.20.1:10」をキーワードにして、キーワードに一致するポート管理テーブル122aの転送先アドレスを検索する。そして一致するエントリを取得する。図7に示すポート管理テーブル122aの場合、受信アドレス「10.25.20.1:20001」を含むエントリを取得する。
次に、ポート変換設定サーバ100eは、取得したエントリの受信アドレスと転送先アドレスに一致するアドレス変換テーブル30bのエントリの受信側Srcアドレスを「Null」にする指示をDoS対策装置30に送信する。これにより、DoS対策装置30は、取得したエントリの受信アドレスと転送先アドレスとが一致するアドレス変換テーブル30bのエントリの受信側Srcアドレスを「Null」に設定する。これにより、DoS対策装置30は、再度、受信アドレス「10.25.20.1:20001」に対するアクセスを受け付けることができる。
この第8の実施の形態のシステムによれば、第7の実施の形態のシステムと同様の効果が得られる。
そして、第8の実施の形態のシステムによれば、トークンサーバ41または認証サーバ42に対し、不当な要求が届いたときは、ポート変換設定サーバ100eが、アドレス変換テーブル30bの受信側Srcアドレスに設定したIPアドレスを削除するようにした。これにより、例えば、悪意のあるアプリケーションからのリクエストが先に届いてしまった場合は、受信側Srcアドレスを「Null」にすることができる。従って、再度、正当なクライアント装置10やアプリケーション21からのアクセスを受け入れることができる。
以上、本発明のアクセス制御プログラム、アクセス制御方法およびアクセス制御装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。例えば、前述した各実施の形態では、ポート変換設定サーバを独立した装置として説明したが、これに限定されず、例えば、ポート変換設定サーバが有する機能が、DoS対策装置30に組み込まれていてもよい。
図44は、ポート変換機能がDoS対策装置に設けられている例を示す図である。
図44に示すポート変換設定部31は、ポート変換設定サーバ100が有する機能と同様の機能を有しており、前述したポート変換設定処理等を実行する。このような構成によるシステムにおいてもシステム1000と同様の効果が得られる。
また、本発明に、他の任意の構成物や工程が付加されていてもよい。
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ポート変換設定サーバ100、100a、100b、100c、100d、100eが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
アクセス制御プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上の第1〜第8の実施の形態に関し、さらに以下の付記を開示する。
(付記1) クライアント装置と2以上のサーバ装置間のアクセス制御を情報処理装置に実行させるアクセス制御プログラムにおいて、
コンピュータに、
前記2以上のサーバ装置の1つである第1サーバ装置上で実行される複数の処理のうち1つの処理の完了により前記クライアント装置に送信されるポート番号であって、該ポート番号のポートを前記情報処理装置に開放させるための開放要求を、受信する受信手順、
前記受信手順により受信された前記開放要求に含まれる、前記開放要求を送信した前記第1サーバ装置を識別する情報に基づいて、前記ポート番号のポートを開放させるためのデータ転送用情報を生成する生成手順、
前記生成手順により生成された前記データ転送用情報を、前記情報処理装置に送信する送信手順、
を実行させることを特徴とするアクセス制御プログラム。
(付記2) 前記データ転送用情報には、前記第1サーバ装置の次にアクセスされる前記サーバ装置の1つである第2サーバ装置のポート番号を含むことを特徴とする付記1記載のアクセス制御プログラム。
(付記3) 前記生成手順では、前記開放要求を送信した前記第1サーバ装置を識別する情報に基づいて、前記第2サーバ装置のポート番号を決定することを特徴とする付記1または2記載のアクセス制御プログラム。
(付記4) 前記生成手順では、前記開放要求を送信した前記第1サーバ装置を識別する情報に加え、前記開放要求に含まれる一連の処理を識別する情報に基づいて、前記第2サーバ装置のポート番号を決定することを特徴とする付記1から3のいずれかに記載のアクセス制御プログラム。
(付記5) 前記コンピュータに、さらに、開放されている前記ポートの遮断要求を受信する遮断要求受信手順、
前記遮断要求に含まれる前記一連の処理を識別する情報と前記開放要求に含まれる一連の処理を識別する情報とに基づいて、開放されている前記ポートを特定し、特定した前記ポートを遮断させるポート遮断用情報を生成するポート遮断用情報生成手順、
前記ポート遮断用情報生成手順により生成された前記ポート遮断用情報を、前記情報処理装置に送信するポート遮断用情報送信手順、
を実行させることを特徴とする付記4記載のアクセス制御プログラム。
(付記6) 前記遮断要求に前記遮断要求を送信する前記第2サーバ装置を識別する情報および前記第2サーバ装置のポート番号が含まれている場合、
前記ポート遮断用情報生成手順では、さらに、ポートの開放時に決定した前記第2サーバ装置を識別する情報および前記第2サーバ装置のポート番号に基づいて開放されている前記ポートを特定することを特徴とする付記5記載のアクセス制御プログラム。
(付記7) 前記コンピュータを、さらに、前記生成手順により決定された前記第2サーバ装置を識別する情報および前記第2サーバ装置のポート番号と、開放させた前記ポート番号と、前記一連の処理を識別する情報とを関連づけた管理情報を格納する格納手段として機能させ、
前記ポート遮断用情報生成手順では、前記遮断要求を送信する前記第2サーバ装置を識別する情報および前記第2サーバ装置のポート番号と前記一連の処理を識別する情報と、前記管理情報とに基づいて、開放されている前記ポートを特定し、前記ポート遮断用情報を生成することを特徴とする付記6記載のアクセス制御プログラム。
(付記8) 前記コンピュータに、さらに、前記開放要求を送信する前記第1サーバ装置を識別する情報と前記一連の処理を識別する情報と前記第2サーバ装置を識別する情報および前記第2サーバ装置のポート番号とを関連づけた設定情報を格納する格納手段として機能させ、
前記生成手順では、前記設定情報を参照し、前記第2サーバ装置のポートを決定することを特徴とする付記4記載のアクセス制御プログラム。
(付記9) 前記コンピュータに、さらに、
開放されている前記ポートの遮断要求を受信する遮断要求受信手順、
前記遮断要求に含まれる前記遮断要求を送信する前記第2サーバ装置を識別する情報および前記第2サーバ装置のポート番号に基づいて、開放されている前記ポートを特定し、特定した前記ポートを遮断させるポート遮断用情報を生成するポート遮断用情報生成手順、
前記ポート遮断用情報生成手順により生成された前記ポート遮断用情報を、前記情報処理装置に送信する送信手順、
を実行させることを特徴とする付記3記載のアクセス制御プログラム。
(付記10) 前記コンピュータを、さらに、前記生成手順により決定された前記第2サーバ装置および前記第2サーバ装置のポートと、開放させた前記ポート番号を識別する情報とを関連づけた管理情報を格納する格納手段として機能させ、
前記ポート遮断用情報生成手順では、前記遮断要求を送信する前記第2サーバ装置を識別する情報および前記第2サーバ装置のポート番号と、前記管理情報とに基づいて、開放されている前記ポートを特定し、前記ポート遮断用情報を生成することを特徴とする付記9記載のアクセス制御プログラム。
(付記11) 前記遮断要求は、前記一連の処理を完了した前記第2サーバ装置が、処理が完了した時点で出力することを特徴とする付記5または9記載のアクセス制御プログラム。
(付記12) 前記コンピュータに、さらに、前記受信手順により前記開放要求を受信した時刻から所定時間経過後までに前記開放要求により開放した前記ポートの遮断要求が前記遮断要求受信手順により受信されなかった場合、前記遮断要求を受信していなくても前記開放要求により開放した前記ポートを遮断させるポート遮断用情報を生成する監視手順を実行させ、
前記送信手順では、前記監視手順により生成された前記ポート遮断用情報を、前記情報処理装置に送信することを特徴とする付記5または9記載のアクセス制御プログラム。
(付記13) 前記コンピュータに、さらに、前記第2サーバ装置の応答を監視し、前記第2サーバ装置の応答がないことを検出すると、前記開放要求を受信した時刻からの時間の経過のカウントをリセットする監視手順を実行させることを特徴とする付記12記載のアクセス制御プログラム。
(付記14) 前記コンピュータを、さらに、前記ポート番号を決定し、前記開放要求を送信する前記第1サーバ装置に通知するポート決定手順を実行させることを特徴とする付記1記載のアクセス制御プログラム。
(付記15) 前記生成手順では、前記受信手順による前記開放要求の受信に基づいて前記複数の処理のうちのアクセス予定の全ての前記サーバ装置を決定し、決定した全ての前記サーバ装置のポートを予め開いておくことを特徴とする付記1記載のアクセス制御プログラム。
(付記16) 前記情報処理装置は、開放したポートに対しアクセスがあった装置のIPアドレスを登録し、登録した前記IPアドレス以外からのアクセスを拒否する機能を有し、
前記コンピュータに、さらに、不当なリクエストが届いたことにより前記第2サーバ装置から受信するエラー通知に応じて、前記IPアドレスの登録を解除する指示を出力する出力手順を実行させることを特徴とする付記1記載のアクセス制御プログラム。
(付記17) クライアント装置と2以上のサーバ装置間のアクセス制御を情報処理装置に実行させるアクセス制御方法において、
コンピュータが、
前記2以上のサーバ装置の1つである第1サーバ装置上で実行される複数の処理のうち1つの処理の完了により前記クライアント装置に送信されるポート番号であって、該ポート番号のポートを前記情報処理装置に開放させるための開放要求を、受信し、
受信された前記開放要求に含まれる、前記開放要求を送信した前記第1サーバ装置を識別する情報に基づいて、前記ポート番号のポートを開放させるためのデータ転送用情報を生成し、
生成された前記データ転送用情報を、前記情報処理装置に送信する、
ことを特徴とするアクセス制御方法。
(付記18) クライアント装置と2以上のサーバ装置間のアクセス制御を情報処理装置に実行させるアクセス制御装置において、
前記2以上のサーバ装置の1つである第1サーバ装置上で実行される複数の処理のうち1つの処理の完了により前記クライアント装置に送信されるポート番号であって、該ポート番号のポートを前記情報処理装置に開放させるための開放要求を、受信する受信部と、
前記受信部により受信された前記開放要求に含まれる、前記開放要求を送信した前記第1サーバ装置を識別する情報に基づいて、前記ポート番号のポートを開放させるためのデータ転送用情報を生成する生成部と、
前記生成部により生成された前記データ転送用情報を、前記情報処理装置に送信する送信部と、
を有することを特徴とするアクセス制御装置。
(付記19) クライアント装置と2以上のサーバ装置間のアクセス制御をコンピュータに実行させるアクセス制御プログラムにおいて、
前記コンピュータに、
前記2以上のサーバ装置の1つである第1サーバ装置上で実行される複数の処理のうち1つの処理の完了により前記クライアント装置に送信されるポート番号であって、該ポート番号のポートを開放するための開放要求を、受信する受信手順、
前記受信手順により受信された前記開放要求に含まれる、前記開放要求を送信した前記第1サーバ装置を識別する情報に基づいて、前記ポート番号のポートを開放させるためのデータ転送用情報を生成する生成手順、
を実行させることを特徴とするアクセス制御プログラム。