[z/OS]

SAF 지시문

이들 구성 매개변수는 IBM® HTTP Server에 대한 SAF(System Authorization Facility) 기능을 제어합니다. IBM HTTP Server에 사용자 인증을 제공하려면 SAF 지시문을 사용하십시오.

AuthSAFAuthoritative 지시문

이전 릴리스에서 AuthSAFAuthoritative 지시문은 권한이 하위 레벨 모듈로 전달되는지 여부를 설정합니다. 이 릴리스에서 Apache HTTP Server API의 변경으로 인해 AuthSAFAuthoritative가 더 이상 필요하지 않거나 허용되지 않습니다.

지시문 설명
구문 AuthSAFAuthoritative on | off
기본값 on
컨텍스트 디렉토리, .htaccess
모듈 mod_authnz_saf
on | off

이전 릴리스에서 AuthSAFAuthoritative 지시문은 권한을 하위 레벨 모듈로 전달하는지 여부를 설정합니다. 이 릴리스에서 Apache HTTP Server API의 변경으로 인해 AuthSAFAuthoritative가 더 이상 필요하지 않거나 허용되지 않습니다.

이전 릴리스에서 사용된 경우 구성에서 제거해야 합니다.

AuthSAFExpiration 지시문

AuthSAFExpiration 지시문은 브라우저 프롬프트에 표시되는 값을 설정합니다. 서버는 HTTP 응답 헤더에서 AuthName 지시문에 대해 지정되는 값과 이 짧은 구문을 전송한 후 브라우저가 비밀번호 프롬프트 창에서 사용자에게 해당 정보를 표시합니다. 짧은 구문은 AuthName 지시문에 대해 지정된 값과 동일한 문자 제한사항이 적용됩니다. 그러므로 비밀번호 프롬프트 창에서 특수 문자를 표시하려면 서버가 특수 문자를 EBCDIC CharsetSourceEnc 코드 페이지에서 ASCII CharsetDefault 코드 페이지로 변환해야 합니다. 예를 들어, 움라우트를 갖는 소문자 'a'를 표시하기 원하고 httpd.conf 파일에 독일어 EBCDIC 코드 페이지 "CharsetSourceEnc IBM-1141" 및 ASCII 코드 페이지 "CharsetDefault ISO08859-1"이 들어있는 경우 올바른 ASCII 문자로 변환하는 16진 값 '43'을 사용하여 구문을 코드화해야 합니다.

지시문 설명
구문 AuthSAFExpiration short_phrase
기본값 off
컨텍스트 디렉토리, .htaccess
모듈 mod_authnz_saf
off 또는 short_phrase

AuthSAFExpiration 지시문을 구문으로 설정하면 IBM HTTP Server가 사용자에게 SAF 비밀번호가 만기할 때 해당 비밀번호를 업데이트하도록 프롬프트할 수 있습니다. 사용자가 유효한 ID와 SAF 비밀번호를 입력했으나 비밀번호가 만기된 경우, 서버는 Authentication Required 응답과 함께 사용자가 만기된 비밀번호를 업데이트할 수 있는 특수 프롬프트를 리턴합니다. 프롬프트는 영역(AuthName 지시문의 값)과 AuthSAFExpiration 지시문의 short_phrase 값으로 구성됩니다.

예를 들어, 다음과 같은 구성을 고려하십시오.
<Location /js>
AuthType basic
AuthName "zwasa051_SAF"
AuthBasicProvider saf
Require valid-user
Require saf-group SYS1 WASUSER
AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw"
</Location>

사용자가 URL이 /js로 시작하는 파일을 액세스하려고 시도할 경우, 서버는 SAF ID와 비밀번호를 프롬프트합니다. 브라우저가 영역을 포함하는 프롬프트를 표시합니다. 범주는 AuthName 지시문의 값입니다(이 예제에서 zwasa051_SAF).

사용자가 유효한 ID와 비밀번호를 제공하지만 비밀번호가 만기된 경우, 서버는 프롬프트를 반복하지만 이번에는 zwasa051_SAF EXPIRED! oldpw/newpw/newpw를 사용합니다. 프롬프트가 무엇이든 간에 사용자는 만기된 비밀번호, 슬래시, 새 비밀번호, 또다른 슬래시, 새 비밀번호를 차례로 재입력해야 합니다.

비밀번호 업데이트가 성공할 경우, 서버는 독특한 특수 프롬프트와 함께 또다른 Authentication Required 응답을 전송합니다. 이 마지막 상호 작용은 브라우저가 캐시해야 하는 비밀번호를 이해할 수 있도록 하기 위해 필요합니다. 이 때 프롬프트는 Re-enter new password 프롬프트가 뒤따르는 영역으로 구성됩니다. 이 예제에서는 zwasa051_SAF Re-enter new password입니다.

AuthSAFExpiredRedirect 지시문

AuthSAFExpiredRedirect 지시문은 z/OS®에서의 인증을 위해 mod_authnz_saf를 사용 중일 때 비밀번호가 만기되는 경우 요청이 경로 재지정되어야 하는 URL을 지정합니다.

이것은 AuthSAFExpiration 사용의 대안입니다.

지시문 설명
구문 AuthSAFExpiredRedirect url
기본값 off
컨텍스트 디렉토리, .htaccess
모듈 mod_authnz_saf
off 또는 url

AuthSAFReEnter 지시문

AuthSAFReEnter 지시문은 비밀번호 변경이 성공한 후 영역 뒤에 추가되는 값을 설정합니다. 특수 문자 코딩에 대한 정보는 BAuthSAFExpiration 지시문을 참조하십시오.

지시문 설명
구문 AuthSAFReEnter short_phrase
기본값 Re-enter new password
컨텍스트 디렉토리, .htaccess
모듈 mod_authnz_saf
off 또는 short_phrase

AuthSAFReEnter 지시문을 "Re-enter new password"가 아닌 다른 어구로 명시적으로 설정하면 만기된 비밀번호를 성공적으로 업데이트한 후 관리자가 대체 메시지를 표시할 수 있습니다. AuthSAFExpirationoff로 설정된 경우 이 지시문은 유효하지 않습니다.

예를 들어, 다음과 같은 구성을 고려하십시오.
<Location /js>
AuthType basic
AuthName "zwasa051_SAF"
AuthBasicProvider saf
Require saf-user SYSADM USER152 BABAR
AuthSAFExpiration "EXPIRED! oldpw/newpw/newpw"
AuthSAFReEnter "Enter new password one more time"
</Location>

이 예제에서는 만기된 비밀번호를 성공적으로 업데이트한 후 서버가 또다른 Authentication Required 응답을 AuthSAFReEnter 지시문의 값과 함께 전송합니다. 이 마지막 상호 작용은 브라우저가 캐시해야 하는 비밀번호를 이해할 수 있도록 하기 위해 필요합니다. 이 때 프롬프트는 특수한 어구가 뒤따르는 영역으로 구성됩니다. 이 예제에서는 zwasa051_SAF Enter new password one more time입니다.

SAFAPPLID 지시문

"SAFRunAs"을 사용한 구성에서 운영 체제 pthread_security_applid_np() 서브루틴에 전달되는 애플리케이션 ID(APPLID) 매개변수를 대체합니다.

지시문 설명
구문 SAFAPPLID application-id
기본값 없음(일부 OS 구성에서는 이를 암시적으로 "OMVSAPPL"로 취급함)
컨텍스트 디렉토리, .htaccess
모듈 mod_authnz_saf
application-id

SAFRunAs 지시문이 사용되는 경우, "APPL" 클래스가 활성 상태인 일부 보안 제품 구성에서는 보안 제품이 인증된 사용자에게 "OMVSAPPL" 클래스에 대한 액세스 권한이 있는지 확인합니다. SAFAPPLID가 구성된 경우에는 지정된 application-id가 대신 사용됩니다.

SAFRunAs 지시문

SAFRunAs 지시문은 요청을 서비스할 SAF 사용자 ID를 설정합니다.

지시문 설명
구문 SAFRunAs value
기본값 off
컨텍스트 디렉토리, .htaccess
모듈 mod_authnz_saf
off | %%CLIENT%% | %%CERTIF%% | %%CERTIF_REQ%% | %%CERTIF%% /prefix | surrogate-username /prefix | <surrogate ID>
  • Off: 서버는 웹 서버 사용자 ID로 요청을 실행합니다.
  • %%CLIENT%%: 서버가 Authorization 요청 헤더에 제공된 ID로 요청을 실행합니다. 일반적으로 사용자가 브라우저의 팝업 창에 사용자 ID와 비밀번호를 제공하면, 브라우저에서 헤더를 작성합니다. SAF가 URL을 인증하도록 구성되어야 합니다.
  • %%CERTIF%%: 서버가 SAF의 SSL 클라이언트 인증과 연관된 ID로 요청을 실행합니다. SSL 인증이 없거나 SSL 인증이 SAF의 ID와 연관되지 않은 경우, %%CLIENT%%가 코딩된 것처럼 처리가 계속됩니다. SAF authn 또는 authz가 구성될 필요는 없습니다.

    surrogate-user: 서버가 스레드 ID를 특정 대리 사용자로 변경합니다. 서버에는 BPX.SRV.surrogate-user 프로파일에 대한 읽기 권한이 있어야 합니다. 이 옵션을 사용하는 경우 웹 서버의 대리 및 원래 ID 모두에는 요청되고 있는 파일 시스템 오브젝트에 대한 액세스 권한이 있어야 합니다. 이 제한사항은 이 SAFRunAs 메소드에 고유하며 z/OS 보안 모델의 기능입니다. 서버는 지정된 SAF 대리 ID와 연관된 ID로 요청을 실행합니다.

  • %%CERTIF_REQ%%: 서버가 SAF의 SSL 클라이언트 인증과 연관된 ID로 요청을 실행합니다. SSL 인증이 없거나 SSL 인증이 SAF의 ID와 연관되지 않은 경우 서버가 액세스를 허용하지 않습니다. SAF authn 또는 authz가 구성될 필요는 없습니다.

    <surrogate-user>: 서버가 스레드 ID를 특정 대리 사용자로 변경합니다. 서버에 BPX.SRV."surrogate-user"에 대한 읽기 액세스 권한이 있어야 합니다. 이 옵션을 사용할 때 _both_ 대리 및 웹 서버의 원래 ID에 요청된 파일 시스템 오브젝트에 대한 액세스 권한이 있어야 합니다. 이 제한사항은 이 SAFRunAs 메소드에 고유하며 z/OS 보안 모델의 기능입니다.

    <surrogate-user>: 서버는 지정된 SAF 대리 ID와 연관된 ID로 요청을 실행합니다.

  • %%CERTIF%% /prefix: 서버가 스레드 ID를 /prefix 아래의 URL에 대한 SSL 고객 클라이언트 인증 제공 ID로 변경합니다.
    문제점 방지 문제점 방지:
    • 이 구문은 글로벌 및 <virtualHost> 컨텍스트에서만 유효합니다.
    • <위치> 또는 <디렉토리> 컨텍스트 내의 한 인수 버전을 사용하여SAFRunAs도 구성된 경우 요청 동안 서버가 ID를 두 번 전환하지 않습니다.
    • 이 기능은 "AuthBasicProvider saf"와 함께 사용될 수 있습니다.
    gotcha
  • surrogate-username /prefix: 서버가 스레드 ID를 /prefix 아래의 URL에 대한 특정 대리 사용자 ID로 변경합니다.

    이 옵션을 사용할 때 _both_ 대리 및 웹 서버의 원래 ID에 요청된 파일 시스템 오브젝트에 대한 액세스 권한이 있어야 합니다. 이 제한사항은 이 SAFRunAs 메소드에 고유하며 z/OS 보안 모델의 기능입니다.

    문제점 방지 문제점 방지:
    • 이 구문은 글로벌 및 <virtualHost> 컨텍스트에서만 유효합니다.
    • <위치> 또는 <디렉토리> 컨텍스트 내의 한 인수 버전을 사용하여SAFRunAs도 구성된 경우 요청 동안 서버가 ID를 두 번 전환하지 않습니다.
    • 이 기능은 "AuthBasicProvider saf"와 함께 사용될 수 있습니다.
    gotcha
  • <surrogate ID>: 서버는 지정된 SAF 대리 ID외 연관된 ID로 요청을 실행합니다.

IBM HTTP Server는 TCP 소켓 또는 UNIX 소켓을 사용하여 FastCGI 애플리케이션과 통신할 수 있습니다. 그러나 FastCGI 요청에 대해 SAFRunAs를 사용할 때는 애플리케이션과의 통신을 위해 TCP 소켓을 사용해야 합니다. FastCGI 애플리케이션을 위해 작성되는 UNIX 소켓은 웹 서버 사용자 ID만 액세스할 수 있습니다. SAFRunAs 지시문으로 제어되는 대체 사용자 ID는 UNIX 소켓에 액세스할 권한이 없으므로 요청은 실패합니다.

TCP 소켓을 사용하도록 FastCGI를 구성하려면 FastCGIServer 지시문에 -port 옵션을 사용하거나 FastCGIExternalServer 지시문을 사용하여 mod_fastcgi 모듈에 대한 FastCGI 애플리케이션을 정의하십시오. FastCGIServer 또는 FastCGIExternalServer를 사용하여 구성하지 않은 동적 FastCGI 서버는 SAFRunAs로 사용할 수 없습니다.

FastCGI 요청에 대해 SAFRunAs를 사용 가능으로 설정하지 않은 경우 TCP 소켓은 필요하지 않습니다.

문제점 방지 문제점 방지: Action 지시문으로 처리되는 자원에 대한 SAFRunAS 지시문을 구성할 수 있습니다. 이를 수행하는 경우 원래 자원에 대한 경로 대신에 Action 지시문의 두 번째 매개변수를 포함하는 범위에서 SAFRunAS 지시문을 구성해야 합니다.
예를 들어 SAFRunAs 지시문은 일반적으로 Location 지시문에서 사용됩니다.
<Location /context-root-A/>
   SAFRunAS %%CLIENT%%
 </Location>
/context-root-A/* 매개변수를 포함하는 경로에 대한 요청은 원격 사용자로 실행됩니다.
그러나 Action 지시문을 사용하는 경우 서버는 일치를 위해 사용하는 컨텍스트 루트를 대체합니다.
# Process *.phtml with the "php-script" handler.
AddHandler php-script .phtml

# Define the "php-script" handler as an existing CGI.
Action php-script /cgi-bin/php-cgi
Action 지시문은 /context-root-A/hello.phtml 파일에 대한 요청을 /context-root-A/hello.phtml의 명령행 인수와 함께 /cgi-bin/php-cgi 매개변수가 포함된 경로에 대한 요청으로 전환합니다.
Action 지시문을 포함하고 또한 다음 예에서와 같이 Location 지시문에 SAFRunAs 지시문을 포함하는 경우:
<Location /cgi-bin/php-cgi>
   SAFRunAS %%CLIENT%%
 </Location>

여러 개의 SAFRunAs 설정이 필요한 경우 Action 지시문을 전부 중지하거나 각기 다른 두 번째 매개변수가 있는 여러 개의 Action 지시문을 작성하십시오.

gotcha

SAFRunAsEarly 지시문

SAFRunAsEarly 지시문은 디렉토리에 액세스하기 전에 SAFRunAs가 실행할 수 있도록 허용합니다.

지시문 설명
구문 SAFRunAsEarly on | off
기본값 off
컨텍스트 위치
모듈 mod_authnz_saf
on | off
%%CLIENT%%SAFRunAs 설정 요청을 수신하면 IHS는 사용자 ID를 전환하기 전에 응답에 제공할 파일에 대한 액세스를 시도합니다. IHS가 실행되는 사용자에게 액세스할 수 없지만 %%CLIENT%% 사용자에게 액세스할 수 있는 디렉토리/파일에 있을 때 이러한 문제가 발생할 수 있습니다. 이와 같은 오류는 다음과 같은 디렉토리를 시도할 때 발생합니다.
[Tue Aug 11 14:03:16 2015] [error] [client x.x.x.x] (111)EDC5111I Permission denied. (errno2=0x5B4B0002): 
access to /saf/privileged/index.html deniedIf SAFRunAsEarly is set to on with SAFRunAs set to %%CLIENT%%, IHS will switch
user before any directory/file access are attempted.

SAFRunAsEarly%%CLIENT%%에 대한 SAFRunAs 설정으로 설정하면 IHS는 디렉토리/파일 액세스를 시도하기 전에 사용자를 전환합니다.

참고:

SAFRunAsEarly는 <Location> 컨텍스트 또는 글로벌 컨텍스트에 사용해야 합니다. 이는 <Directory> 컨텍스트에서 사용할 수 없습니다.

인증 및 권한 부여를 위해 SAF를 사용하려는 경우 다음 예를 고려하십시오. 이것은 SAF 사용자 및 그룹을 위한 가장 일반적인 시나리오이며 웹 액세스 요구사항을 만족합니다.
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /saf_protected>
AuthType basic
AuthName x1 
AuthBasicProvider saf
# Code "Require valid-user" if you want any valid
# SAF user to be able to access the resource.
Require valid-user
#
# Alternately, you can provide a list of specific SAF users
# who may access the resource.
# Require saf-user USER84 USER85
#
# Alternatively, you can provide a list of specific SAF groups
# whose members may access the resource.
# Require saf-group WASGRP1 WASGRP2
</Location>
인증을 위해 SAF 파일을 사용하지만 권한 부여에는 비SAF 그룹 파일을 사용하려는 경우 다음 예를 고려하십시오. 이 예에서 사용자는 SAF를 사용하여 인증되지만 다른 메커니즘을 사용하여 권한 부여됩니다.
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /saf_password>
AuthType basic
AuthName "SAF auth with hfs groupfile"
AuthBasicProvider saf
AuthGroupFile /www/config/foo.grp
# Code "Require file-group" and a list of groups if you want
# a user in any of the groups in the specified group file to be able
# to access the resource.
# Note: Any authorization module, with its standard configuration, can be used here.
Require group admin1 admin2
</Location>
사용자가 SAF 또는 그룹 파일에 의해 권한 부여되는 경우 사용자에 대한 액세스를 허용하려는 경우 다음 예를 고려하십시오.
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /either_group>
AuthType basic
AuthName "SAF auth with SAF groups and hfs groupfile"
AuthBasicProvider saf
AuthGroupFile /www/groupfiles/foo.grp
Require saf-group WASGRP
Require saf-group ADMINS
</Location>
요청이 인증된 사용자 이름과 연관된 SAF 권한을 사용하여 실행하도록 요구하려는 경우 다음 예를 고려하십시오.
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /runas_admin_bin>
AuthName "SAF RunAs client"
AuthType basic
Require valid-user
AuthBasicProvider saf
SAFRunAs %%CLIENT%%
</Location>
만기된 SAF 비밀번호의 변경을 지원하려는 경우 다음 예를 고려하십시오.
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule authz_default_module modules/mod_authz_default.so
...
<Location /custom_password_change>
AuthType basic
AuthName "Support expired PW"
Require valid-user
AuthBasicProvider saf
AuthSAFEXpiration "EXPIRED PW: oldpw/newpw/newpw"
AuthSAFReEnter "New PW again:"
</Location>

사용자가 자원에 액세스할 수 있기 전에 클라이언트 인증을 요구하려는 경우 mod_ibm_ssl 지시문을 사용하십시오. mod_authnz_saf 지시문은 이 구성에 필요없습니다. 추가 정보는 SSLClientAuth 및 SSLClientAuthRequire 지시문에 대한 문서를 참조하십시오.

클라이언트 인증을 사용하여 요청 처리가 수행되는 사용자를 판별하려는 경우 다음 예를 고려하십시오. 사용자에게 유효한 인증서가 없는 경우 액세스가 거부됩니다.
LoadModule authnz_saf_module modules/mod_authnz_saf.so
LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
...
<Location /certificate_required>
SAFRunAs %%CERTIF_REQ%%
</Location>
요청이 클라이언트 인증과 연관된 SAF 권한을 사용하여 실행하지만 클라이언트 인증이 SAF 사용자에게 맵핑되지 않는 경우 사용자 이름 및 비밀번호 인증을 요구하려는 경우 다음 예를 고려하십시오. 사용자가 SAF가 사용자 ID에 맵핑할 수 있는 인증서를 제공하는 경우 해당 사용자 ID도 임의의 Require 지시문을 전달해야 합니다.
<Location /certificate_or_basic>
AuthName "SAF RunAs certif"
AuthType basic
Require saf-user USER84 USER103
AuthBasicProvider saf
SAFRunAs %%CERTIF%%
</Location>
요청이 대리 ID와 연관된 SAF 권한을 사용하여 실행하도록 요구하려는 경우 다음 예를 고려하십시오.
<Location /runas_public>
SAFRunAs PUBLIC
# This can be combined with SAF or non-SAF authentication/authorization
</Location>

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=ihs-dist&topic=rihs_safdirs
파일 이름:rihs_safdirs.html