Next Topic

Previous Topic

Book Contents

VSA APIウェブサービスセキュリティ

一般

VSA APIウェブサービスは、デフォルトでは、有効なVSAユーザー証明書を使用するすべての IP アドレスからアクセス可能です。このデフォルトの構成では、任意のマシンからの承認で、有効なユーザー名/パスワードの組み合わせが考慮されます。

どんな構成でも、提示されるパスワードはVSAが提供するhash.dllを使用して暗号化しなければなりません。hash.dllの実装の詳細は、提供されるソースコードのサンプルにあります。

正常な承認のリクエストでSessionIDが発行されると、毎回のサービスの呼び出しでは必ずこのSessionIDを提示する必要があり、発行した IP アドレスから受信した場合だけ有効です。発行されたSessionIDは、有効期間が経過すると失効します。

AccesRules.xmlファイルを準備して、展開することでセキュリティを強化できます。VSA APIウェブサービスは、このファイルを使用して、リクエストを受信した IP アドレスに基づいてアクセスルールを定義します。IP フィルタリングは、一般的に企業間システムで使用され、リクエストが必ずパートナーのサーバーからのリクエストであることを保証します。

AccesRules.xmlファイルは次の3つの部分から構成されています:

  • デフォルトアクセスルール
  • IPレンジ
  • ユーザーマッピング

注: 127.0.0.1 (ローカルホスト)は、構成に関わらず、必ずすべてのアカウントにアクセスします。

XMLの構造

<AccessRules>
	<DefaultAccessRules>
		<GrantAnyIPToUndefinedUsers/>
		<GrantAllIPRangesToUndefinedUsers/>
		<DenyAccessToUndefinedUsers/>
	</DefaultAccessRules>
	<IPRanges>
		<IPRange RangeID="" FromIPAddress="" ToIPAddress="" RangeDescription=""/>
		<IPRange RangeID="" FromIPAddress="" ToIPAddress="" RangeDescription=""/>
	</IPRanges>
	<UserMapping>
		<User UserName="" RangeID="" GrantAllRanges="" GrantAnyIP="" DenyAccess=""/>
		<User UserName="" RangeID="" GrantAllRanges="" GrantAnyIP="" DenyAccess=""/>
	</UserMapping>
</AccessRules>

デフォルトアクセスルール

このセクションのエレメントは、ユーザーマッピングセクションで個別に指定されていないアカウントに関するアクセスルールを定義します。

<GrantAnyIPToUndefinedUsers/> true/false

真:UserMappingにないユーザーは、任意の IP アドレスからアクセスできます。

<GrantAllIPRangesToUndefinedUsers/> true/false

真:UserMappingにないユーザーは、IPRanges に含まれる IP アドレスからアクセスできます。

<DenyAccessToUndefinedUsers/> true/false

真:UserMappingにないユーザーは、アクセスを拒否されます。

IPレンジ

このセクションは、IP によって特定のマシン、またはマシンの範囲を定義するために使用され、ユーザーアクセスを割り当てるために使用されます。

RangeID="integer"

UserMappingのレンジを参照するために使用され、ユーザーに自由に割り当てられる整数です。

FromIPAddress="string"

開始 IP アドレス。このアドレス自体も含まれます。4組のうち最初の3組はToIPAddressと一致しなければなりません。

ToIPAddress="string"

終了 IP アドレス。このアドレス自体も含まれます。4組のうち最初の3組はFromIPAddressと一致しなければなりません。

RangeDescription="string"

IPレンジの説明です。例:「実運用サーバー」。

ユーザーマッピング

UserName="string"

VSAのアドミン名。VSA APIウェブサービスは、VSAと同じ証明書とパスワード暗号化を使用します。したがって、VSAでパスワードを変更する場合、必ずVSA APIウェブサービスのクライアントの実装でも同様に変更します。

RangeID="integer"

IP レンジのセクションで定義された IP レンジをポイントするために使用。ユーザーは、アクセスできるすべての IP レンジを表す、複数の UserMapping エレメントを持てます。以下の付与/拒否属性の1つを使用する場合は使用しません。

GrantAllRanges="true/false"

真:ユーザーは、IP レンジセクションで定義されるどのレンジからでもアクセスできます。

GrantAnyIP="true/false"

真:ユーザーは、どの IP アドレスからでもアクセスできます。

DenyAccess="true/false"

真:ユーザーはまったくアクセスできません。

アクセス構成XMLのサンプル

<AccessRules>
	<DefaultAccessRules>
		<GrantAnyIPToUndefinedUsers>false</GrantAnyIPToUndefinedUsers>
		<GrantAllIPRangesToUndefinedUsers>false</GrantAllIPRangesToUndefinedUsers>
		<DenyAccessToUndefinedUsers>true</DenyAccessToUndefinedUsers>
	</DefaultAccessRules>
	<IPRanges>
		<IPRange RangeID="1" FromIPAddress="192.168.214.01" ToIPAddress="192.168.214.10" RangeDescription="Partner X Production Web Farm"/>
		<IPRange RangeID="2" FromIPAddress="192.168.15.102" ToIPAddress="192.168.15.102" RangeDescription="Senior Developer Machine"/>
		<IPRange RangeID="3" FromIPAddress="192.168.15.105" ToIPAddress="192.168.15.109" RangeDescription="Sales Demo Machines"/>
		<IPRange RangeID="4" FromIPAddress="192.168.210.35" ToIPAddress="192.168.210.35" RangeDescription="Interal QA Machine"/>
	</IPRanges>
	<UserMapping>
		<User UserName="B2BMasterAdmin" RangeID="1" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="DevTestAccount" RangeID="2" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTestAccount" RangeID="3" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTestAccount2" RangeID="3" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="QAMasterAdmin" RangeID="4" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTravellingTestAccount" RangeID="" GrantAllRanges="false" GrantAnyIP="true" DenyAccess="false"/>
		<User UserName="Bob" RangeID="" GrantAllRanges="true" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="Sally" RangeID="" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="true"/>
	</UserMapping>
</AccessRules>