Next Topic

Previous Topic

Book Contents

VSA API 웹 서비스 보안

일반

VSA API 웹 서비스는 기본적으로 유효한 VSA 사용자 자격 증명을 사용해 세계의 모든 IP 에서 액세스할 수 있습니다. 이러한 기본 구성에서는 유효한 사용자 이름/비밀 번호 조합이 컴퓨터에서 생성되는 인증을 위한 것으로 간주됩니다.

일정한 구성에서는, VSA에 의해 제공된 hash.dll 을 사용해서 전송할 수 있도록 비밀 번호를 암호화해야 합니다. hash.dll에 대한 실행 정보는 제공된 것과 예제 소스 코드에 포함됩니다.

성공적인 인증 요청이 SessionID를 발행하면, 서비스 호출이 있을 때마다 이 SessionID를 전송해야 하며, SessionID는 발행된 IP 주소에서 받는 경우에만 유효합니다. 일정 기간 활동하지 않으면, 발행된 SessionID가 만료됩니다.

AccesRules.xml 파일을 준비해서 배포하면 보안을 강화할 수 있습니다. VSA API 웹 서비스는 이 파일을 사용해 요청을 받은 IP 주소를 기반으로 액세스 규칙을 정의합니다. IP 필터링은 파트너의 서버에서만 요청이 인정될 수 있도록 하기 위해 B2B 시스템에서 공통적으로 사용된 매커니즘입니다.

AccesRules.xml 파일은 다음의 세 섹션으로 나눌 수 있습니다:

  • 기본 액세스 규칙
  • 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에 없는 사용자는 IP 범위에 포함된 IP 주소에서 액세스를 가져 옵니다.

<DenyAccessToUndefinedUsers/> true/false

참: UserMapping에 없어 액세스가 거부된 사용자.

IP 범위

이 섹션은 IP별로 사용자 액세스를 할당하기 위해 사용되는 특정 컴퓨터 또는 컴퓨터 범위를 정의하는 데 사용됩니다.

RangeID="integer"

UserMapping의 범위를 참조하기 위해 사용된 임의의 사용자 할당 정수.

FromIPAddress="string"

포괄적인 IP 주소 시작. 4개로 이루어진 한 벌 중에서 처음 세 개의 위치가 ToIPAddress와 일치해야 합니다.

ToIPAddress=" string"

포괄적인 IP 주소 종료. 4개로 이루어진 한 벌 중에서 처음 세 개의 위치가 FromIPAddress와 일치해야 합니다.

RangeDescription=" string"

IP 범위의 설명. 예를 들어, “프로덕션 서버”.

사용자 매핑

UserName="string"

VSA 관리자 이름 VSA API 웹 서비스는 VSA와 동일한 자격 증명 및 비밀 번호 암호화를 사용합니다. 그렇기 때문에 VSA에서 비밀 번호를 변경하면 VSA API 웹 서비스 클라이언트 실행에서도 마찬가지로 비밀 번호를 변경해야 합니다.

RangeID="integer"

IP 범위 섹션에서 정의된 IP 범위를 가리키는 데 사용. 사용자는 복수의 UserMapping 요소를 가지고 액세스하는 모든 IP 범위를 표현할 수 있습니다. 아래의 승인/거부 특성 중의 하나가 사용되는 경우에는 사용되지 않음.

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>