ID 저장소를 사용하여 애플리케이션 및 관리 인터페이스 보안


Red Hat JBoss Enterprise Application Platform 8.0

파일 시스템, 데이터베이스, LDAP(Lightweight Directory Access Protocol) 또는 사용자 정의 ID 저장소와 같은 ID 저장소를 사용하여 JBoss EAP 관리 인터페이스 및 배포된 애플리케이션을 보호하는 가이드

Red Hat Customer Content Services

초록

파일 시스템, 데이터베이스, LDAP(Lightweight Directory Access Protocol) 또는 사용자 정의 ID 저장소와 같은 ID 저장소를 사용하여 JBoss EAP 관리 인터페이스 및 배포된 애플리케이션을 보호하는 가이드입니다.

JBoss EAP 문서에 대한 피드백 제공

오류를 보고하거나 문서를 개선하기 위해 Red Hat Jira 계정에 로그인하여 문제를 제출하십시오. Red Hat Jira 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.

프로세스

  1. 티켓을 생성하려면 다음 링크를 클릭하십시오.
  2. 요약 에 문제에 대한 간략한 설명을 입력합니다.
  3. 설명에서 문제 또는 개선 사항에 대한 자세한 설명을 제공합니다. 문서에서 문제가 발생한 위치에 URL을 포함합니다.
  4. Submit 을 클릭하고 문제를 적절한 문서 팀으로 라우팅합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

1장. ID 저장소 구성

1.1. 파일 시스템-realm생성

1.1.1. Elytron의 파일 시스템 영역

파일 시스템 보안 영역인 filesystem-realm 을 사용하면 Elytron에서 파일 시스템 기반 ID 저장소를 사용하여 사용자 자격 증명 및 속성을 저장할 수 있습니다. Elytron은 각 ID를 파일 시스템의 XML 파일에 관련 자격 증명 및 특성과 함께 저장합니다. XML 파일의 이름은 ID의 이름입니다. 각 ID와 인증 정보를 여러 개 연결할 수 있습니다.

기본적으로 ID는 다음과 같이 파일 시스템에 저장됩니다.

  • Elytron은 두 가지 수준의 디렉토리 해시를 ID가 저장되는 디렉터리 구조에 적용합니다. 예를 들어 "user1"이라는 ID는 u/s/user1.xml 위치에 저장됩니다.

    이 작업은 단일 디렉터리에 저장할 수 있는 파일 수와 성능상의 일부 파일 시스템에 설정된 제한을 극복하기 위해 수행됩니다.

    levels 속성을 사용하여 적용할 디렉터리 해시의 수를 구성합니다.

  • ID 이름은 파일 이름으로 사용하기 전에 Base32로 인코딩됩니다. 일부 파일 시스템은 대소문자를 구분하지 않거나 파일 이름에 허용되는 문자 집합을 제한할 수 있기 때문에 수행됩니다.

    인코딩된 속성을 false 로 설정하여 인코딩을 해제할 수 있습니다.

다른 속성 및 기본값에 대한 자세한 내용은 filesystem-realm 특성을 참조하십시오.

암호화

filesystem-realm 은 ID 파일에 ID를 저장할 때 명확한 암호, 해시된 암호 및 속성을 위해 Base64 인코딩을 사용합니다. 보안을 강화하기 위해 인증 정보 저장소에 저장된 시크릿 키를 사용하여 일반 암호, 해시된 암호 및 속성을 암호화할 수 있습니다. 시크릿 키는 암호 및 특성을 암호화하고 해독하는 데 사용됩니다.

무결성 검사

파일 시스템-realm으로 생성된 ID가 변조되지 않도록 파일 시스템 생성 중에 파일 시스템-realm의 키 쌍을 참조하여 filesystem-realm 에서 무결성 검사를 활성화할 수 있습니다.

무결성 검사는 다음과 같이 filesystem-realm 에서 작동합니다.

  • 무결성 검사가 활성화된 filesystem-realm 에서 ID를 생성하면 Elytron은 ID 파일을 만들고 서명을 생성합니다.
  • 예를 들어 ID 파일을 읽을 때마다 ID를 업데이트하거나 인증을 위해 ID를 로드할 때 Elytron은 서명에 대해 ID 파일 콘텐츠를 확인하여 파일이 마지막으로 승인된 쓰기 이후 변조되지 않았는지 확인합니다.
  • 연결된 서명이 있는 기존 ID를 업데이트할 때 Elytron은 콘텐츠를 업데이트하고 원래 콘텐츠가 확인을 통과한 후 새 서명을 생성합니다.

    확인에 실패하면 다음과 같은 실패 메시지가 표시됩니다.

    {
        "outcome" => "failed",
        "failure-description" => "WFLYCTL0158: Operation handler failed:java.lang.RuntimeException: WFLYELY01008: Failed to obtain the authorization identity.",
        "rolled-back" => true
    }
    Copy to Clipboard Toggle word wrap

1.1.2. Ely tron에서 파일 시스템 생성

JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호하기 위해 영역을 참조하는 filesystem-realm 및 보안 도메인을 만듭니다.

사전 요구 사항

  • JBoss EAP가 실행 중입니다.

프로세스

  1. Elytron에서 filesystem-realm 을 만듭니다.

    구문

    /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 사용자를 영역에 추가하고 사용자 역할을 구성합니다.

    1. 사용자를 추가합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1)
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    2. 사용자의 암호를 설정합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"})
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    3. 사용자의 역할을 설정합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

  3. filesystem-realm 을 참조하는 보안 도메인을 생성합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}])
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  • Elytron이 filesystem-realm 에서 ID를 로드할 수 있는지 확인하려면 다음 명령을 사용합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:read-identity(name=user1)
    {
        "outcome" => "success",
        "result" => {
            "name" => "user1",
            "attributes" => {"Roles" => [
                "Admin",
                "Guest"
            ]},
            "roles" => [
                "Guest",
                "Admin"
            ]
        }
    }
    Copy to Clipboard Toggle word wrap

이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다. 자세한 내용은 관리 인터페이스 및 애플리케이션 보안을 참조하십시오.

1.1.3. Elytron에서 암호화된 파일 시스템 만들기 -realm

암호화된 파일 시스템-realm 을 만들어 JBoss EAP 애플리케이션 또는 서버 인터페이스를 보호하고 사용자 자격 증명이 암호화되어 안전한지 확인합니다.

1.1.3.1. 독립 실행형 서버에 대한 secret-key-credential-store 생성

관리 CLI를 사용하여 secret-key-credential-store 를 생성합니다. secret-key-credential-store 를 생성할 때 JBoss EAP는 기본적으로 시크릿 키를 생성합니다. 생성된 키의 이름은 key 이고 크기는 256비트입니다.

사전 요구 사항

  • JBoss EAP가 실행 중입니다.
  • JBoss EAP가 실행 중인 사용자 계정에 대해 secret-key-credential-store 가 포함된 디렉터리에 대한 읽기/쓰기 액세스 권한이 있어야 합니다.

프로세스

  • 관리 CLI를 사용하여 secret-key-credential-store 를 생성하려면 다음 명령을 사용합니다.

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

1.1.3.2. 암호화된 파일 시스템 생성-realm

JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호하기 위해 영역을 참조하는 암호화된 파일 시스템-realm 및 보안 도메인을 만듭니다.

사전 요구 사항

프로세스

  1. Elytron에서 암호화된 파일 시스템-realm 을 만듭니다.

    구문

    /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>,credential-store=<name_of_credential_store>,secret-key=<key>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir, credential-store=examplePropertiesCredentialStore, secret-key=key)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 사용자를 영역에 추가하고 사용자 역할을 구성합니다.

    1. 사용자를 추가합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1)
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    2. 사용자의 암호를 설정합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"})
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    3. 사용자의 역할을 설정합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

  3. filesystem-realm 을 참조하는 보안 도메인을 생성합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}])
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  • Elytron이 암호화된 filesystem-realm 에서 ID를 로드할 수 있는지 확인하려면 다음 명령을 사용합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:read-identity(name=user1)
    {
        "outcome" => "success",
        "result" => {
            "name" => "user1",
            "attributes" => {"Roles" => [
                "Admin",
                "Guest"
            ]},
            "roles" => [
                "Guest",
                "Admin"
            ]
        }
    }
    Copy to Clipboard Toggle word wrap

이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다.

1.1.4. Elytron에서 무결성 지원이 포함된 파일 시스템 생성

JBoss EAP 애플리케이션 또는 서버 인터페이스를 보호하고 사용자 인증 정보가 변경되지 않도록 하는 무결성으로 파일 시스템-realm 을 만듭니다.

1.1.4.1. 관리 CLI를 사용하여 키 쌍 생성

Elytron의 키 쌍을 사용하여 키 저장소를 만듭니다.

사전 요구 사항

  • JBoss EAP가 실행 중입니다.

프로세스

  1. 키 저장소를 생성합니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:add(path=<path_to_key_store_file>,credential-reference={<password>})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:add(path=keystore, relative-to=jboss.server.config.dir, type=JKS, credential-reference={clear-text=secret})
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 키 저장소에 키 쌍을 만듭니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost")
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  3. 키 저장소 파일에 키 쌍을 저장합니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:store()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:store()
    {
        "outcome" => "success",
        "result" => undefined
    }
    Copy to Clipboard Toggle word wrap

1.1.4.2. 무결성 지원이 포함된 파일 시스템 생성

JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호하기 위해 영역을 참조하는 보안 도메인과 무결성 지원이 포함된 파일 시스템-realm 을 만듭니다.

사전 요구 사항

프로세스

  1. Elytron에서 filesystem-realm 을 만듭니다.

    구문

    /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>,key-store=<key_store_name>,key-store-alias=<key_store_alias>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir, key-store=exampleKeystore, key-store-alias=localhost)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 사용자를 영역에 추가하고 사용자 역할을 구성합니다.

    1. 사용자를 추가합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity(identity=user1)
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    2. 사용자의 암호를 설정합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:set-password(identity=user1, clear={password="passwordUser1"})
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    3. 사용자의 역할을 설정합니다.

      구문

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/filesystem-realm=exampleSecurityRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

  3. filesystem-realm 을 참조하는 보안 도메인을 생성합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<filesystem_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<filesystem_realm_name>,role-decoder="<role_decoder_name>"}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}])
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  • Elytron이 filesystem-realm 에서 ID를 로드할 수 있는지 확인하려면 다음 명령을 사용합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:read-identity(name=user1)
    {
        "outcome" => "success",
        "result" => {
            "name" => "user1",
            "attributes" => {"Roles" => [
                "Admin",
                "Guest"
            ]},
            "roles" => [
                "Guest",
                "Admin"
            ]
        }
    }
    Copy to Clipboard Toggle word wrap

이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다. 자세한 내용은 관리 인터페이스 및 애플리케이션 보안을 참조하십시오.

기존 키가 손상된 경우 무결성 지원이 활성화된 파일 시스템에서 참조하는 키 쌍을 업데이트할 수 있습니다. 또한 키를 교체하는 것이 좋습니다.

사전 요구 사항

프로세스

  1. 기존 키 저장소에 키 쌍을 만듭니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost2,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost")
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 키 저장소 파일에 키 쌍을 저장합니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:store()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:store()
    {
        "outcome" => "success",
        "result" => undefined
    }
    Copy to Clipboard Toggle word wrap

  3. 키 저장소 별칭을 업데이트하여 새 키 쌍을 참조합니다.

    구문

    /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:write-attribute(name=key-store-alias, value=<key_store_alias>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/filesystem-realm=exampleSecurityRealm:write-attribute(name=key-store-alias, value=localhost2)
    {
        "outcome" => "success",
        "response-headers" => {
            "operation-requires-reload" => true,
            "process-state" => "reload-required"
        }
    }
    Copy to Clipboard Toggle word wrap

  4. 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap
  5. 새 키 쌍을 사용하여 파일 시스템-realm 의 파일을 새 서명으로 업데이트합니다.

    구문

    /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:update-key-pair()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/filesystem-realm=exampleSecurityRealm:update-key-pair()
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  • 다음 관리 CLI 명령을 사용하여 filesystem-realm 에서 참조된 키 쌍이 업데이트되었는지 확인합니다.

    구문

    /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:read-resource()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/filesystem-realm=exampleSecurityRealm:read-resource()
    {
        "outcome" => "success",
        "result" => {
            "credential-store" => undefined,
            "encoded" => true,
            "hash-charset" => "UTF-8",
            "hash-encoding" => "base64",
            "key-store" => "exampleKeystoreFSRealm",
            "key-store-alias" => "localhost2",
            "levels" => 2,
            "secret-key" => undefined,
            "path" => "fs-realm-users",
            "relative-to" => "jboss.server.config.dir"
        }
    }
    Copy to Clipboard Toggle word wrap

filesystem-realm 에서 참조된 키 쌍이 업데이트되었습니다.

1.1.5. 암호화되지 않은 파일 시스템 암호화 -realm

Elytron에 파일 시스템-realm 이 구성된 경우 WildFly Elytron Tool을 사용하여 암호화를 추가할 수 있습니다.

1.1.5.1. 독립 실행형 서버에 대한 secret-key-credential-store 생성

관리 CLI를 사용하여 secret-key-credential-store 를 생성합니다. secret-key-credential-store 를 생성할 때 JBoss EAP는 기본적으로 시크릿 키를 생성합니다. 생성된 키의 이름은 key 이고 크기는 256비트입니다.

사전 요구 사항

  • JBoss EAP가 실행 중입니다.
  • JBoss EAP가 실행 중인 사용자 계정에 대해 secret-key-credential-store 가 포함된 디렉터리에 대한 읽기/쓰기 액세스 권한이 있어야 합니다.

프로세스

  • 관리 CLI를 사용하여 secret-key-credential-store 를 생성하려면 다음 명령을 사용합니다.

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:add(path="<path_to_the_credential_store>", relative-to=<path_to_store_file>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:add(path=examplePropertiesCredentialStore.cs, relative-to=jboss.server.config.dir)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

WildFly Elytron 툴 filesystem-realm 명령을 사용하여 암호화되지 않은 파일 시스템-realm 을 암호화된 파일 시스템으로 변환할 수 있습니다.

사전 요구 사항

프로세스

  1. 암호화되지 않은 파일 시스템-realm 을 암호화된 파일 시스템으로 변환합니다.

    구문

    $ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-encrypt --input-location <existing_filesystem_realm_name> --output-location JBOSS_HOME/standalone/configuration/<target_filesystem_realm_name> --credential-store <path_to_credential_store>/<credential_store>
    Copy to Clipboard Toggle word wrap

    예제

    $ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-encrypt --input-location JBOSS_HOME/standalone/configuration/fs-realm-users --output-location JBOSS_HOME/standalone/configuration/fs-realm-users-enc --credential-store JBOSS_HOME/standalone/configuration/examplePropertiesCredentialStore.cs
    
    Creating encrypted realm for: JBOSS_HOME/standalone/configuration/fs-realm-users
    Found credential store and alias, using pre-existing key
    Copy to Clipboard Toggle word wrap

    WildFly Elytron 명령 filesystem-realm-encrypt--output-location 인수로 지정된 filesystem-realm 을 생성합니다. 또한 elytron 하위 시스템에 filesystem-realm 리소스를 추가하는 데 사용할 수 있는 filesystem-realm 의 루트에 CLI 스크립트를 생성합니다.

    작은 정보

    명령 실행에 대한 요약을 보려면 --summary 옵션을 사용합니다.

  2. 생성된 CLI 스크립트를 사용하여 elytron 하위 시스템에 filesystem-realm 리소스를 추가합니다.

    Synax

    $ JBOSS_HOME/bin/jboss-cli.sh --connect --file=<target_filesystem_realm_directory>/<target_filesystem_realm_name>.cli
    Copy to Clipboard Toggle word wrap

    예제

    $ JBOSS_HOME/bin/jboss-cli.sh --connect --file=JBOSS_HOME/standalone/configuration/fs-realm-users-enc/encrypted-filesystem-realm.cli
    Copy to Clipboard Toggle word wrap

암호화된 filesystem-realm 을 사용하여 JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호하는 영역을 참조하는 보안 도메인을 생성할 수 있습니다.

1.1.6. 기존 filesystem-realm에 무결성 지원 추가

Elytron에 파일 시스템-realm 이 구성된 경우 WildFly Elytron Tool을 사용하여 무결성 검사를 활성화하여 키 쌍으로 서명할 수 있습니다.

1.1.6.1. 관리 CLI를 사용하여 키 쌍 생성

Elytron의 키 쌍을 사용하여 키 저장소를 만듭니다.

사전 요구 사항

  • JBoss EAP가 실행 중입니다.

프로세스

  1. 키 저장소를 생성합니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:add(path=<path_to_key_store_file>,credential-reference={<password>})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:add(path=keystore, relative-to=jboss.server.config.dir, type=JKS, credential-reference={clear-text=secret})
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 키 저장소에 키 쌍을 만듭니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:generate-key-pair(alias=<alias>,algorithm=<key_algorithm>,key-size=<size_of_key>,validity=<validity_in_days>,distinguished-name="<distinguished_name>")
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,distinguished-name="CN=localhost")
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  3. 키 저장소 파일에 키 쌍을 저장합니다.

    구문

    /subsystem=elytron/key-store=<key_store_name>:store()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/key-store=exampleKeystore:store()
    {
        "outcome" => "success",
        "result" => undefined
    }
    Copy to Clipboard Toggle word wrap

1.1.6.2. filesystem-realm의 무결성 검사 활성화

WildFly Elytron 툴 파일 시스템-realm- integrity 명령을 사용하여 비어 있지 않은 기존 파일 시스템(realm )에서 무결성 검사가 포함된 파일 시스템-realm 을 생성할 수 있습니다.

다음 사용 사례에 filesystem-realm-integrity 명령을 사용할 수 있습니다.

  • 기존 파일 시스템에서 무결성 검사를 통해 새 파일 시스템 만들기 -realm.
  • 기존 filesystem-realm 에 무결성 검사 추가

사전 요구 사항

프로세스

  1. 기존 filesystem-realm 을 사용하고 키 쌍으로 서명하여 무결성이 지원되는 filesystem-realm 을 생성합니다.

    기존 filesystem-realm 에 무결성 지원을 추가하려면 다음 명령에서 --output-location--realm-name 옵션을 생략합니다. --output-location--realm-name 옵션을 지정하면 명령은 기존 옵션을 업데이트하지 않고 무결성 검사를 사용하여 새 파일 시스템-realm 을 생성합니다.

    구문

    $ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-integrity  --input-location <path_to_existing_filesystem_realm> --keystore <path_to_key_store_file> --password <keystore_password> --key-pair <key_pair_alias> --output-location <path_for_new_filesystem_realm> --realm-name <name_of_new_filesystem_realm>
    Copy to Clipboard Toggle word wrap

    예제

    $ JBOSS_HOME/bin/elytron-tool.sh filesystem-realm-integrity --input-location JBOSS_HOME/standalone/configuration/fs-realm-users/ --keystore JBOSS_HOME/standalone/configuration/keystore --password secret --key-pair localhost --output-location JBOSS_HOME/standalone/configuration/fs-realm-users --realm-name exampleRealmWithIntegrity
    Copy to Clipboard Toggle word wrap

    Exmaple 출력

    Creating filesystem realm with integrity verification for: JBOSS_HOME/standalone/configuration/fs-realm-users
    Copy to Clipboard Toggle word wrap

    WildFly Elytron 명령 filesystem-realm -integrity--output-location 인수로 지정된 파일 시스템-realm을 생성합니다. 또한 elytron 하위 시스템에 filesystem-realm 리소스를 추가하는 데 사용할 수 있는 filesystem-realm 의 루트에 CLI 스크립트를 생성합니다.

    작은 정보

    명령 실행에 대한 요약을 보려면 --summary 옵션을 사용합니다.

  2. 생성된 CLI 스크립트를 사용하여 elytron 하위 시스템에 filesystem-realm 리소스를 추가합니다.

    구문

    $ JBOSS_HOME/bin/jboss-cli.sh --connect --file=<target_filesystem_realm_directory>/<target_filesystem_realm_name>.cli
    Copy to Clipboard Toggle word wrap

    예제

    $ JBOSS_HOME/bin/jboss-cli.sh --connect --file=JBOSS_HOME/standalone/configuration/fs-realm-users/exampleRealmWithIntegrity.cli
    Copy to Clipboard Toggle word wrap

filesystem-realm 을 사용하여 이 영역을 참조하는 보안 도메인을 생성하여 JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호할 수 있습니다.

1.2. JDBC 영역 생성

1.2.1. Elytron에서 jdbc-realm 만들기

JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호하기 위해 영역을 참조하는 jdbc-realm 및 보안 도메인을 만듭니다.

절차의 예제에서는 다음과 같이 구성된 PostgreSQL 데이터베이스를 사용합니다.

  • 데이터베이스 이름: postgresdb
  • 데이터베이스 로그인 인증 정보:

    • 사용자 이름: postgres
    • 암호: postgres
  • 표 이름: example_jboss_eap_users
  • example_jboss_eap_users contents:

    Expand
    사용자 이름암호역할

    user1

    passwordUser1

    관리자

    user2

    passwordUser2

    게스트

사전 요구 사항

  • 사용자를 포함하는 데이터베이스를 구성했습니다.
  • JBoss EAP가 실행 중입니다.
  • 적절한 JDBC 드라이버를 다운로드했습니다.

프로세스

  1. 관리 CLI를 사용하여 데이터베이스 드라이버를 배포합니다.

    구문

    deploy <path_to_jdbc_driver>/<jdbc-driver>
    Copy to Clipboard Toggle word wrap

    예제

    deploy PATH_TO_JDBC_DRIVER/postgresql-42.2.9.jar
    Copy to Clipboard Toggle word wrap

  2. 데이터베이스를 데이터 소스로 구성합니다.

    구문

    data-source add --name=<data_source_name> --jndi-name=<jndi_name> --driver-name=<jdbc-driver>  --connection-url=<database_URL> --user-name=<database_username> --password=<database_username>
    Copy to Clipboard Toggle word wrap

    예제

    data-source add --name=examplePostgresDS --jndi-name=java:jboss/examplePostgresDS --driver-name=postgresql-42.2.9.jar  --connection-url=jdbc:postgresql://localhost:5432/postgresdb --user-name=postgres --password=postgres
    Copy to Clipboard Toggle word wrap

  3. Elytron에 jdbc-realm 을 만듭니다.

    구문

    /subsystem=elytron/jdbc-realm=<jdbc_realm_name>:add(principal-query=[<sql_query_to_load_users>])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/jdbc-realm=exampleSecurityRealm:add(principal-query=[{sql="SELECT password,roles FROM example_jboss_eap_users WHERE username=?",data-source=examplePostgresDS,clear-password-mapper={password-index=1},attribute-mapping=[{index=2,to=Roles}]}])
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

    참고

    이 예제에서는 단일 주체 쿼리 에서 암호 및 역할을 가져오는 방법을 보여줍니다. 역할 또는 추가 인증 또는 권한 부여 정보를 가져오기 위해 여러 쿼리가 필요한 경우 특성 매핑 특성을 사용하여 추가 주체- 쿼리를 생성할 수도 있습니다.

    지원되는 암호 매퍼 목록은 암호 매퍼 를 참조하십시오. ???

  4. jdbc-realm 을 참조하는 보안 도메인을 만듭니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<jdbc_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=< jdbc_realm_name>,role-decoder="<role_decoder_name>"}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}])
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  • Elytron이 데이터베이스에서 데이터를 로드할 수 있는지 확인하려면 다음 명령을 사용합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:read-identity(name=user1)
    {
        "outcome" => "success",
        "result" => {
            "name" => "user1",
            "attributes" => {"Roles" => ["Admin"]},
            "roles" => ["Admin"]
        }
    }
    Copy to Clipboard Toggle word wrap

    출력은 Elytron이 데이터베이스에서 데이터를 로드할 수 있음을 확인합니다.

이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다. 자세한 내용은 관리 인터페이스 및 애플리케이션 보안을 참조하십시오.

1.3. LDAP 영역 생성

1.3.1. Elytron의 LDAP 영역

LDAP(Lightweight Directory Access Protocol) 영역 ldap-realm 은 LDAP ID 저장소에서 ID를 로드하는 데 사용할 수 있는 보안 영역입니다.

다음 예제에서는 JBoss EAP의 Elytron ID로 LDAP의 ID를 매핑하는 방법을 보여줍니다.

LDAP Data Interchange Format (LDIF) 파일 예

dn: ou=Users,dc=wildfly,dc=org
objectClass: organizationalUnit
objectClass: top
ou: Users

dn: uid=user1,ou=Users,dc=wildfly,dc=org
objectClass: top
objectClass: person
objectClass: inetOrgPerson
cn: user1
sn: user1
uid: user1
userPassword: userPassword1

dn: ou=Roles,dc=wildfly,dc=org
objectclass: top
objectclass: organizationalUnit
ou: Roles

dn: cn=Admin,ou=Roles,dc=wildfly,dc=org
objectClass: top
objectClass: groupOfNames
cn: Admin
member: uid=user1,ou=Users,dc=wildfly,dc=org
Copy to Clipboard Toggle word wrap

LDAP 영역을 생성하는 명령의 예

/subsystem=elytron/dir-context=exampleDirContext:add(url="ldap://10.88.0.2",principal="cn=admin,dc=wildfly,dc=org",credential-reference={clear-text="secret"})

/subsystem=elytron/ldap-realm=exampleSecurityRealm:add(dir-context=exampleDirContext,identity-mapping={search-base-dn="ou=Users,dc=wildfly,dc=org",rdn-identifier="uid",user-password-mapper={from="userPassword"},attribute-mapping=[{filter-base-dn="ou=Roles,dc=wildfly,dc=org",filter="(&(objectClass=groupOfNames)(member={1}))",from="cn",to="Roles"}]})
Copy to Clipboard Toggle word wrap

명령을 실행하면 다음 구성이 생성됩니다.

<ldap-realm name="exampleLDAPRealm" dir-context="exampleDirContext"> 
1

    <identity-mapping rdn-identifier="uid" search-base-dn="ou=Users,dc=wildfly,dc=org"> 
2

        <attribute-mapping> 
3

            <attribute from="cn" to="Roles" filter="(&amp;(objectClass=groupOfNames)(member={1}))" filter-base-dn="ou=Roles,dc=wildfly,dc=org"/> 
4

        </attribute-mapping>
        <user-password-mapper from="userPassword"/> 
5

    </identity-mapping>
</ldap-realm>
Copy to Clipboard Toggle word wrap
1
영역 정의입니다.
  • nameldap-realm 영역 이름입니다.
  • dir-context 는 LDAP 서버에 연결할 구성입니다.
2
ID 매핑 방법을 정의합니다.
  • R DN-identifier 는 주체의 이름을 LDAP 항목에서 가져오는 데 사용할 고유 이름(DN)의 상대 고유 이름(RDN)입니다. 예제 LDIF에서 uid 는 기본 DN=ou=Users,dc=wildfly,dc=org 의 주체 이름을 표시하도록 구성됩니다.

    search-base-dn 은 ID를 검색할 기본 DN입니다. 예제 LDIF에서는 dn: ou=Users,dc=wildfly,dc=org 로 정의됩니다.

3
ID 속성 매핑에 대한 LDAP 속성을 정의합니다.
4
특정 LDAP 속성을 Elytron ID 속성으로 매핑하는 방법을 구성합니다.
  • 에서 매핑할 LDAP 속성입니다. 정의되지 않은 경우 항목의 DN이 사용됩니다.
  • to 는 LDAP 속성에서 매핑된 ID 특성의 이름입니다. 제공되지 않는 경우 속성의 이름은 의 이름과 동일합니다. from 도 정의되지 않은 경우 항목의 DN이 사용됩니다.
  • filter 는 특정 속성의 값을 가져오는 데 사용할 필터입니다. 문자열 '{0}'은 사용자 ID DN으로 '{1}' 사용자 이름으로 교체됩니다.

    • objectclass 는 사용할 LDAP 오브젝트 클래스입니다. LDIF 예제에서 사용할 오브젝트 클래스는 groupOfNames 로 정의됩니다.
    • 멤버 는 매핑할 멤버입니다. {0} 은 사용자 이름으로 교체되고 {1} 은 사용자 ID DN으로 교체됩니다. 이 예에서 {1}멤버user1 에 매핑하는 데 사용됩니다.
  • filter-base-dn 은 필터를 적용해야 하는 컨텍스트의 이름입니다.

    예제 필터의 결과는 user1 사용자가 Admin 역할로 매핑된다는 것입니다.

5
user-password-mapper 는 ID의 암호를 가져오는 LDAP 속성을 정의합니다. 이 예제에서는 LDIF에 userPassword 1 로 정의된 userPassword 로 구성됩니다.

1.3.2. Elytron에서 ldap-realm 생성

LDAP(Lightweight Directory Access Protocol) ID 저장소에서 지원하는 Elytron 보안 영역을 만듭니다. 보안 영역을 사용하여 관리 인터페이스 또는 서버에 배포된 애플리케이션에 인증 및 권한 부여를 추가하는 보안 도메인을 생성합니다.

참고

캐싱 영역으로 구성된 LDAP- realm은 Active Directory를 지원하지 않습니다. 자세한 내용은 Elytron .NET Framework CLI를 통해 LDAP/AD 사용자 암호 변경을 참조하십시오.

중요

elytron 하위 시스템이 LDAP 서버를 사용하여 인증을 수행하는 경우 LDAP 서버에 연결할 수 없는 경우 JBoss EAP는 500 오류 코드 또는 내부 서버 오류를 반환합니다.

LDAP 서버를 사용할 수 있게 되는 경우에도 LDAP 영역을 사용하여 보안된 관리 인터페이스와 애플리케이션에 액세스할 수 있도록 장애 조치 영역을 사용합니다. 자세한 내용은 장애 조치 영역 생성을 참조하십시오.

이 절차의 예에서는 다음 LDAP Data Interchange Format(LDIF)이 사용됩니다.

dn: ou=Users,dc=wildfly,dc=org
objectClass: organizationalUnit
objectClass: top
ou: Users

dn: uid=user1,ou=Users,dc=wildfly,dc=org
objectClass: top
objectClass: person
objectClass: inetOrgPerson
cn: user1
sn: user1
uid: user1
userPassword: userPassword1

dn: ou=Roles,dc=wildfly,dc=org
objectclass: top
objectclass: organizationalUnit
ou: Roles

dn: cn=Admin,ou=Roles,dc=wildfly,dc=org
objectClass: top
objectClass: groupOfNames
cn: Admin
member: uid=user1,ou=Users,dc=wildfly,dc=org
Copy to Clipboard Toggle word wrap

예제에 사용되는 LDAP 연결 매개변수는 다음과 같습니다.

  • LDAP URL: ldap://10.88.0.2
  • LDAP 관리자 암호: secret

    Elytron은 LDAP 서버와 연결하려면 이 작업이 필요합니다.

  • LDAP 관리자 고유 이름(DN): (cn=admin,dc=wildfly,dc=org)
  • LDAP 조직: wildfly

    조직 이름을 지정하지 않으면 기본값은 Example Inc 입니다.

  • LDAP 도메인: wildfly.org

    이는 플랫폼에 LDAP 검색 참조가 수신될 때 일치하는 이름입니다.

사전 요구 사항

  • LDAP ID 저장소를 구성했습니다.
  • JBoss EAP가 실행 중입니다.

프로세스

  1. LDAP 서버에 연결하는 데 사용되는 URL과 주체를 제공하는 디렉터리 컨텍스트를 구성합니다.

    구문

    /subsystem=elytron/dir-context=<dir_context_name>:add(url="<LDAP_URL>",principal="<principal_distinguished_name>",credential-reference=<credential_reference>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/dir-context=exampleDirContext:add(url="ldap://10.88.0.2",principal="cn=admin,dc=wildfly,dc=org",credential-reference={clear-text="secret"})
    Copy to Clipboard Toggle word wrap

  2. 디렉터리 컨텍스트를 참조하는 LDAP 영역을 생성합니다. Search Base DN과 사용자 매핑 방법을 지정합니다.

    구문

    /subsystem=elytron/ldap-realm=<ldap_realm_name>add:(dir-context=<dir_context_name>,identity-mapping=search-base-dn="ou=<organization_unit>,dc=<domain_component>",rdn-identifier="<relative_distinguished_name_identifier>",user-password-mapper={from=<password_attribute_name>},attribute-mapping=[{filter-base-dn="ou=<organization_unit>,dc=<domain_component>",filter="<ldap_filter>",from="<ldap_attribute_name>",to="<identity_attribute_name>"}]})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/ldap-realm=exampleSecurityRealm:add(dir-context=exampleDirContext,identity-mapping={search-base-dn="ou=Users,dc=wildfly,dc=org",rdn-identifier="uid",user-password-mapper={from="userPassword"},attribute-mapping=[{filter-base-dn="ou=Roles,dc=wildfly,dc=org",filter="(&(objectClass=groupOfNames)(member={1}))",from="cn",to="Roles"}]})
    Copy to Clipboard Toggle word wrap

    LDIF 파일에 해시된 암호를 저장하는 경우 다음 속성을 지정할 수 있습니다.

    • hash-encoding: 이 속성은 일반 텍스트로 저장되지 않는 경우 암호의 문자열 형식을 지정합니다. 기본적으로 base64 인코딩으로 설정되어 있지만 16진수 도 지원됩니다.
    • hash-charset: 이 속성은 암호 문자열을 바이트 배열로 변환할 때 사용할 문자를 지정합니다. 기본적으로 UTF-8 로 설정됩니다.
    주의

    참조된 LDAP 서버에 참조에 루프가 포함된 경우 JBoss EAP에서 java.lang.OutOfMemoryError 오류가 발생할 수 있습니다.

  3. 특성을 역할에 매핑하는 역할 디코더를 생성합니다.

    구문

    /subsystem=elytron/simple-role-decoder=<role_decoder_name>:add(attribute=<attribute>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles)
    Copy to Clipboard Toggle word wrap

  4. LDAP 영역 및 역할 디코더를 참조하는 보안 도메인을 생성합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:add(realms=[{realm=<ldap_realm_name>,role-decoder=<role_decoder_name>}],default-realm=<ldap_realm_name>,permission-mapper=<permission_mapper>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(realms=[{realm=exampleSecurityRealm,role-decoder=from-roles-attribute}],default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper)
    Copy to Clipboard Toggle word wrap

이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다. 자세한 내용은 관리 인터페이스 및 애플리케이션 보안을 참조하십시오.

1.4. 속성 영역 생성

1.4.1. Elytron에서 속성을 참조하는 보안 도메인 생성

JBoss EAP 관리 인터페이스 또는 서버에 배포한 애플리케이션을 보호하기 위해 영역을 참조하는 속성-realm 및 보안 도메인을 생성합니다.

사전 요구 사항

  • JBoss EAP가 실행 중입니다.
  • 권한이 부여된 사용자 및 users.properties 파일의 주석 처리된 줄에 작성된 올바른 영역이 있는 기존 레거시 속성 파일이 있습니다.

    예: $EAP_HOME/standalone/configuration/my-example-users.properties

     #$REALM_NAME=exampleSecurityRealm$
     user1=078ed9776d4b8e63b6e51135ec45cc75
    Copy to Clipboard Toggle word wrap

    • user1 의 암호는 userPassword1 입니다. 암호는 HEX( MD5(user1:exampleSecurityRealm:userPassword1 )) 로 해시됩니다.
  • users.properties 파일에 나열된 권한 있는 사용자에게는 groups.properties 파일에 역할이 있습니다.

    예: $EAP_HOME/standalone/configuration/my-example-groups.properties

    user1=Admin
    Copy to Clipboard Toggle word wrap

프로세스

  1. Elytron 에서 속성을 만듭니다.

    구문

    /subsystem=elytron/properties-realm=<properties_realm_name>:add(users-properties={path=<file_path>},groups-properties={path=<file_path>})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/properties-realm=exampleSecurityRealm:add(users-properties={path=my-example-users.properties,relative-to=jboss.server.config.dir,plain-text=true},groups-properties={path=my-example-groups.properties,relative-to=jboss.server.config.dir})
    Copy to Clipboard Toggle word wrap

  2. properties-realm 을 참조하는 보안 도메인을 생성합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<properties_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<properties_realm_name>,role-decoder="<role_decoder_name>"}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm,role-decoder=groups-to-roles}])
    Copy to Clipboard Toggle word wrap

검증

  • Elytron이 속성 파일에서 데이터를 로드할 수 있는지 확인하려면 다음 명령을 사용합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:read-identity(name=user1)
    {
        "outcome" => "success",
        "result" => {
            "name" => "user1",
            "attributes" => {"Roles" => ["Admin"]},
            "roles" => ["Admin"]
        }
    }
    Copy to Clipboard Toggle word wrap

    출력은 Elytron이 속성 파일에서 데이터를 로드할 수 있음을 확인합니다.

이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다. 자세한 내용은 관리 인터페이스 및 애플리케이션 보안을 참조하십시오.

1.5. 사용자 지정 영역 생성

1.5.1. Elytron에 custom-realm 보안 영역 추가

사용자 지정-realm 을 사용하여 사용 사례에 맞는 Elytron 보안 영역을 만들 수 있습니다. 기존 Elytron 보안 영역이 사용 사례에 맞지 않는 경우 사용자 지정 영역을 추가할 수 있습니다.

사전 요구 사항

  • JBoss EAP가 설치되어 실행 중입니다.
  • Maven이 설치되어 있어야 합니다.
  • 구현된 사용자 지정 영역 java 클래스가 있습니다.

프로세스

  1. 사용자 지정 영역 java 클래스를 구현하고 JAR 파일로 패키징합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap
  2. 사용자 지정 영역 구현을 포함하는 모듈을 추가합니다.

    구문

    module add --name=<name_of_your_wildfly_module>
    --resources=<path_to_custom_realm_jar> --dependencies=org.wildfly.security.elytron
    Copy to Clipboard Toggle word wrap

    예제

    module add --name=com.example.customrealm --resources=EAP_HOME/custom-realm.jar --dependencies=org.wildfly.security.elytron
    Copy to Clipboard Toggle word wrap

  3. custom-realm 을 만듭니다.

    구문

    /subsystem=elytron/custom-realm=<name_of_your_custom_realm>:add(module=<name_of_your_wildfly_module>,class-name=<class_name_of_custom_realm_>,configuration={<configuration_option_1>=<configuration_value_1>,<configuration_option_2>=<configuration_value_2>})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/custom-realm=example-realm:add(module=com.example.customrealm,class-name=com.example.customrealm.ExampleRealm,configuration={exampleConfigOption1=exampleConfigValue1,exampleConfigOption2=exampleConfigValue2})
    Copy to Clipboard Toggle word wrap

    참고

    이 예에서는 구현된 사용자 지정 영역에 클래스 이름 com.example.customrealm.ExampleRealm 이 있어야 합니다.

    참고

    구성 속성을 사용하여 키/값 구성custom-realm 에 전달할 수 있습니다. 구성 속성은 선택 사항입니다.

  4. 생성한 영역에 따라 보안 도메인을 정의합니다.

    구문

    /subsystem=elytron/security-domain=<your_security_domain_name>:add(realms=[{realm=<your_realm_name>}],default-realm=<your_realm_name>,permission-mapper=<your_permission_mapper_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(realms=[{realm=example-realm}],default-realm=example-realm,permission-mapper=default-permission-mapper)
    Copy to Clipboard Toggle word wrap

이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다. 자세한 내용은 관리 인터페이스 및 애플리케이션 보안을 참조하십시오.

2장. 관리 인터페이스 및 애플리케이션 보안

2.1. 관리 인터페이스에 인증 및 권한 부여 추가

보안 도메인을 사용하여 이를 보호하기 위해 관리 인터페이스에 대한 인증 및 권한 부여를 추가할 수 있습니다. 인증 및 권한 부여를 추가한 후 관리 인터페이스에 액세스하려면 사용자가 로그인 자격 증명을 입력해야 합니다.

다음과 같이 JBoss EAP 관리 인터페이스를 보호할 수 있습니다.

  • 관리 CLI

    sasl-authentication-factory 를 구성하여.

  • 관리 콘솔

    http-authentication-factory 를 구성하여 다음을 수행합니다.

사전 요구 사항

  • 보안 영역을 참조하는 보안 도메인을 생성했습니다.
  • JBoss EAP가 실행 중입니다.

프로세스

  1. http-authentication-factory 또는 sasl-authentication-factory 를 만듭니다.

    • http-authentication-factory 를 생성합니다.

      구문

      /subsystem=elytron/http-authentication-factory=<authentication_factory_name>:add(http-server-mechanism-factory=global, security-domain=<security_domain_name>, mechanism-configurations=[{mechanism-name=<mechanism-name>, mechanism-realm-configurations=[{realm-name=<realm_name>}]}])
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/http-authentication-factory=exampleAuthenticationFactory:add(http-server-mechanism-factory=global, security-domain=exampleSecurityDomain, mechanism-configurations=[{mechanism-name=BASIC, mechanism-realm-configurations=[{realm-name=exampleSecurityRealm}]}])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    • sasl-authentication-factory 를 만듭니다.

      구문

      /subsystem=elytron/sasl-authentication-factory=<sasl_authentication_factory_name>:add(security-domain=<security_domain>,sasl-server-factory=configured,mechanism-configurations=[{mechanism-name=<mechanism-name>,mechanism-realm-configurations=[{realm-name=<realm_name>}]}])
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/sasl-authentication-factory=exampleSaslAuthenticationFactory:add(security-domain=exampleSecurityDomain,sasl-server-factory=configured,mechanism-configurations=[{mechanism-name=PLAIN,mechanism-realm-configurations=[{realm-name=exampleSecurityRealm}]}])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

  2. 관리 인터페이스를 업데이트합니다.

    • http-authentication-factory 를 사용하여 관리 콘솔을 보호합니다.

      구문

      /core-service=management/management-interface=http-interface:write-attribute(name=http-authentication-factory, value=<authentication_factory_name>)
      Copy to Clipboard Toggle word wrap

      예제

      /core-service=management/management-interface=http-interface:write-attribute(name=http-authentication-factory, value=exampleAuthenticationFactory)
      {
          "outcome" => "success",
          "response-headers" => {
              "operation-requires-reload" => true,
              "process-state" => "reload-required"
          }
      }
      Copy to Clipboard Toggle word wrap

    • sasl-authentication-factory 를 사용하여 관리 CLI를 보호합니다.

      구문

      /core-service=management/management-interface=http-interface:write-attribute(name=http-upgrade,value={enabled=true,sasl-authentication-factory=<sasl_authentication_factory>})
      Copy to Clipboard Toggle word wrap

      예제

      /core-service=management/management-interface=http-interface:write-attribute(name=http-upgrade,value={enabled=true,sasl-authentication-factory=exampleSaslAuthenticationFactory})
      {
          "outcome" => "success",
          "response-headers" => {
              "operation-requires-reload" => true,
              "process-state" => "reload-required"
          }
      }
      Copy to Clipboard Toggle word wrap

  3. 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

검증

  • 관리 콘솔에 인증 및 권한 부여가 필요한지 확인하려면 http://127.0.0.1:9990/console/index.html 에서 관리 콘솔로 이동합니다.

    사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.

  • 관리 CLI에 인증 및 권한 부여가 필요한지 확인하려면 다음 명령을 사용하여 관리 CLI를 시작합니다.

    $ bin/jboss-cli.sh --connect
    Copy to Clipboard Toggle word wrap

    사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.

보안 영역을 참조하는 보안 도메인을 사용하여 애플리케이션 사용자를 인증하고 권한을 부여합니다. 애플리케이션 개발 절차는 예제로만 제공됩니다.

2.2.1. 간단한 웹 애플리케이션 개발

보안 영역 구성 예제와 함께 간단한 웹 애플리케이션을 생성할 수 있습니다.

참고

다음 절차는 예제로만 제공됩니다. 보안하려는 애플리케이션이 이미 있는 경우 이를 건너뛰고 애플리케이션에 인증 및 권한 부여 추가로 직접 이동할 수 있습니다.

2.2.1.1. 웹 애플리케이션 개발을 위한 Maven 프로젝트 생성

웹 애플리케이션을 생성하려면 필수 종속성 및 디렉터리 구조가 포함된 Maven 프로젝트를 생성합니다.

중요

다음 절차는 예제로만 제공되며 프로덕션 환경에서 사용해서는 안 됩니다. JBoss EAP용 애플리케이션 생성에 대한 자세한 내용은 JBoss EAP 배포를 위한 애플리케이션 개발 시작하기 를 참조하십시오.

사전 요구 사항

프로세스

  1. mvn 명령을 사용하여 Maven 프로젝트를 설정합니다. 명령은 프로젝트에 대한 디렉터리 구조와 pom.xml 구성 파일을 생성합니다.

    구문

    $ mvn archetype:generate \
    -DgroupId=${group-to-which-your-application-belongs} \
    -DartifactId=${name-of-your-application} \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    Copy to Clipboard Toggle word wrap

    예제

    $ mvn archetype:generate \
    -DgroupId=com.example.app \
    -DartifactId=simple-webapp-example \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    Copy to Clipboard Toggle word wrap

  2. 애플리케이션 루트 디렉터리로 이동합니다.

    구문

    $ cd <name-of-your-application>
    Copy to Clipboard Toggle word wrap

    예제

    $ cd simple-webapp-example
    Copy to Clipboard Toggle word wrap

  3. 생성된 pom.xml 파일의 내용을 다음 텍스트로 바꿉니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.example.app</groupId>
      <artifactId>simple-webapp-example</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>simple-webapp-example Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
            <version.maven.war.plugin>3.4.0</version.maven.war.plugin>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>jakarta.servlet</groupId>
                <artifactId>jakarta.servlet-api</artifactId>
                <version>6.0.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>${project.artifactId}</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${version.maven.war.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.wildfly.plugins</groupId>
                    <artifactId>wildfly-maven-plugin</artifactId>
                    <version>4.2.2.Final</version>
                </plugin>
            </plugins>
        </build>
    </project>
    Copy to Clipboard Toggle word wrap

검증

  • 애플리케이션 루트 디렉터리에 다음 명령을 입력합니다.

    $ mvn install
    Copy to Clipboard Toggle word wrap

    다음과 유사한 출력이 표시됩니다.

    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.795 s
    [INFO] Finished at: 2022-04-28T17:39:48+05:30
    [INFO] ------------------------------------------------------------------------
    Copy to Clipboard Toggle word wrap

이제 웹 애플리케이션을 생성할 수 있습니다.

2.2.1.2. 웹 애플리케이션 생성

로그인한 사용자의 주체에서 얻은 사용자 이름을 반환하는 서블릿이 포함된 웹 애플리케이션을 생성합니다. 로그인한 사용자가 없는 경우 서블릿은 "NO AUTHENTICATED USER" 텍스트를 반환합니다.

이 절차에서 &lt ;application_home >은 애플리케이션의 pom.xml 구성 파일이 포함된 디렉터리를 나타냅니다.

사전 요구 사항

프로세스

  1. Java 파일을 저장할 디렉터리를 만듭니다.

    구문

    $ mkdir -p src/main/java/<path_based_on_artifactID>
    Copy to Clipboard Toggle word wrap

    예제

    $ mkdir -p src/main/java/com/example/app
    Copy to Clipboard Toggle word wrap

  2. 새 디렉터리로 이동합니다.

    구문

    $ cd src/main/java/<path_based_on_artifactID>
    Copy to Clipboard Toggle word wrap

    예제

    $ cd src/main/java/com/example/app
    Copy to Clipboard Toggle word wrap

  3. 다음 콘텐츠를 사용하여 SecuredServlet.java 파일을 생성합니다.

    package com.example.app;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.security.Principal;
    
    import jakarta.servlet.ServletException;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    
    /**
     * A simple secured HTTP servlet. It returns the user name of obtained
     * from the logged-in user's Principal. If there is no logged-in user,
     * it returns the text "NO AUTHENTICATED USER".
     */
    
    @WebServlet("/secured")
    public class SecuredServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            try (PrintWriter writer = resp.getWriter()) {
                writer.println("<html>");
                writer.println("  <head><title>Secured Servlet</title></head>");
                writer.println("  <body>");
                writer.println("    <h1>Secured Servlet</h1>");
                writer.println("    <p>");
                writer.print(" Current Principal '");
                Principal user = req.getUserPrincipal();
                writer.print(user != null ? user.getName() : "NO AUTHENTICATED USER");
                writer.print("'");
                writer.println("    </p>");
                writer.println("  </body>");
                writer.println("</html>");
            }
        }
    
    }
    Copy to Clipboard Toggle word wrap
  4. 애플리케이션 루트 디렉터리에서 다음 명령을 사용하여 애플리케이션을 컴파일합니다.

    $ mvn package
    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.015 s
    [INFO] Finished at: 2022-04-28T17:48:53+05:30
    [INFO] ------------------------------------------------------------------------
    Copy to Clipboard Toggle word wrap
  5. 애플리케이션을 배포합니다.

    $ mvn wildfly:deploy
    Copy to Clipboard Toggle word wrap

검증

  • 브라우저에서 http://localhost:8080/simple-webapp-example/secured 로 이동합니다.

    다음 메시지가 표시됩니다.

    Secured Servlet
    Current Principal 'NO AUTHENTICATED USER'
    Copy to Clipboard Toggle word wrap

    인증 메커니즘이 추가되지 않으므로 애플리케이션에 액세스할 수 있습니다.

이제 인증된 사용자만 액세스할 수 있도록 보안 도메인을 사용하여 이 애플리케이션을 보호할 수 있습니다.

2.2.2. 애플리케이션에 인증 및 권한 부여 추가

보안 도메인을 사용하여 웹 애플리케이션에 인증 및 권한 부여를 추가하여 보호할 수 있습니다. 인증 및 권한 부여를 추가한 후 웹 애플리케이션에 액세스하려면 사용자가 로그인 자격 증명을 입력해야 합니다.

사전 요구 사항

  • 보안 영역을 참조하는 보안 도메인을 생성했습니다.
  • JBoss EAP에 애플리케이션을 배포했습니다.
  • JBoss EAP가 실행 중입니다.

프로세스

  1. undertow 하위 시스템에서 application-security-domain 을 구성합니다.

    구문

    /subsystem=undertow/application-security-domain=<application_security_domain_name>:add(security-domain=<security_domain_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=undertow/application-security-domain=exampleApplicationSecurityDomain:add(security-domain=exampleSecurityDomain)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 애플리케이션 리소스를 보호하도록 애플리케이션의 web.xml 을 구성합니다.

    구문

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
    
     <!-- Define the security constraints for the application resources.
          Specify the URL pattern for which a challenge is -->
    
     <security-constraint>
            <web-resource-collection>
                <web-resource-name><!-- Name of the resources to protect --></web-resource-name>
                <url-pattern> <!-- The URL to protect  --></url-pattern>
            </web-resource-collection>
    
            <!-- Define the role that can access the protected resource -->
            <auth-constraint>
                <role-name> <!-- Role name as defined in the security domain --></role-name>
                <!-- To disable authentication you can use the wildcard *
                	 To authenticate but allow any role, use the wildcard **. -->
            </auth-constraint>
        </security-constraint>
    
        <login-config>
            <auth-method>
            	<!-- The authentication method to use. Can be:
            		BASIC
            		CLIENT-CERT
            		DIGEST
            		FORM
            		SPNEGO
            	 -->
            </auth-method>
    
            <realm-name><!-- The name of realm to send in the challenge  --></realm-name>
        </login-config>
     </web-app>
    Copy to Clipboard Toggle word wrap

    예제

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
    
     <!-- Define the security constraints for the application resources.
          Specify the URL pattern for which a challenge is -->
    
     <security-constraint>
            <web-resource-collection>
                <web-resource-name>all</web-resource-name>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
    
            <!-- Define the role that can access the protected resource -->
            <auth-constraint>
                <role-name>Admin</role-name>
                <!-- To disable authentication you can use the wildcard *
                	 To authenticate but allow any role, use the wildcard **. -->
            </auth-constraint>
        </security-constraint>
    
        <login-config>
            <auth-method>BASIC</auth-method>
    
            <realm-name>exampleSecurityRealm</realm-name>
        </login-config>
     </web-app>
    Copy to Clipboard Toggle word wrap

    참고

    다른 auth-method 를 사용할 수 있습니다.

  3. 애플리케이션에 jboss-web.xml 파일을 생성하거나 undertow 하위 시스템에서 기본 보안 도메인을 설정하여 애플리케이션을 구성하십시오.

    • 애플리케이션의 article- INF 디렉터리에 application-security-domain 을 참조하는 jboss-web.xml 파일을 만듭니다.

      구문

      <jboss-web>
        <security-domain> <!-- The security domain to associate with the application --></security-domain>
      </jboss-web>
      Copy to Clipboard Toggle word wrap

      예제

      <jboss-web>
        <security-domain>exampleApplicationSecurityDomain</security-domain>
      </jboss-web>
      Copy to Clipboard Toggle word wrap

    • 애플리케이션의 undertow 하위 시스템에서 기본 보안 도메인을 설정합니다.

      구문

      /subsystem=undertow:write-attribute(name=default-security-domain,value=<application_security_domain_to_use>)
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=undertow:write-attribute(name=default-security-domain,value=exampleApplicationSecurityDomain)
      {
          "outcome" => "success",
          "response-headers" => {
              "operation-requires-reload" => true,
              "process-state" => "reload-required"
          }
      }
      Copy to Clipboard Toggle word wrap

  4. 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

검증

  1. 애플리케이션 루트 디렉터리에서 다음 명령을 사용하여 애플리케이션을 컴파일합니다.

    $ mvn package
    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.015 s
    [INFO] Finished at: 2022-04-28T17:48:53+05:30
    [INFO] ------------------------------------------------------------------------
    Copy to Clipboard Toggle word wrap
  2. 애플리케이션을 배포합니다.

    $ mvn wildfly:deploy
    Copy to Clipboard Toggle word wrap
  3. 브라우저에서 http://localhost:8080/simple-webapp-example/secured 로 이동합니다. 이제 애플리케이션에 액세스하려면 인증이 필요함을 확인하는 로그인 프롬프트가 표시됩니다.

이제 보안 도메인을 사용하여 애플리케이션이 보호되며 사용자는 인증 후만 로그인할 수 있습니다. 또한 지정된 역할이 있는 사용자만 애플리케이션에 액세스할 수 있습니다.

Elytron에서 제공하는 identity-realm 을 사용하여 로컬 사용자가 JBoss EAP 관리 인터페이스에 연결할 수 있습니다.

JBoss EAP 관리 CLI는 local 이라는 identity-realm 을 사용하도록 사전 구성되어 있습니다. 이를 통해 로컬 사용자는 인증 정보를 제공하지 않고도 연결할 수 있습니다. ID 영역은 JBOSS-LOCAL-USER 메커니즘에서만 사용할 수 있습니다.

3.1. ID 영역을 사용하여 관리 인터페이스 보안

JBOSS-LOCAL-USER 메커니즘이 있는 identity-realm 보안 영역을 사용하여 관리 인터페이스를 보호할 수 있습니다.

사전 요구 사항

  • JBoss EAP가 실행 중입니다.

프로세스

  1. 로컬 identity-realm 을 만듭니다.

    구문

    /subsystem=elytron/identity-realm=<local_identity_realm_name>:add(identity="$local",attribute-name=<attribute_name>,attribute-values=<attribute_value>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/identity-realm=exampleLocalIdentityRealm:add(identity="$local",attribute-name=AttributeName,attribute-values=Value)
    Copy to Clipboard Toggle word wrap

    1. 선택 사항: $local 이외의 로컬 identity-realm 에 이름을 사용하려면 구성 가능한-sasl-server-factory= <sasl_server_factory>에서 wildfly.sasl.local- user.default-user 속성 값을 변경합니다.

      구문

      /subsystem=elytron/configurable-sasl-server-factory=<sasl_server_factory>:write-attribute(name=properties,value={"wildfly.sasl.local-user.default-user" => "<new_local_username>", "wildfly.sasl.local-user.challenge-path" => expression "${jboss.server.temp.dir}/auth"})
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/configurable-sasl-server-factory=configured:write-attribute(name=properties,value={"wildfly.sasl.local-user.default-user" => "john", "wildfly.sasl.local-user.challenge-path" => expression "${jboss.server.temp.dir}/auth"})
      Copy to Clipboard Toggle word wrap

  2. 생성한 identity-realm 을 참조하는 보안 도메인을 생성합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<local_identity_realm_name>,permission-mapper=<permission_mapper_name>,realms=[{realm=<Local_identity_realm_name>}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleLocalIdentityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleLocalIdentityRealm}])
    Copy to Clipboard Toggle word wrap

  3. SASL 인증 팩토리를 추가합니다.

    구문

    /subsystem=elytron/sasl-authentication-factory=<sasl_auth_factory_name>:add(security-domain=<security_domain_name>,sasl-server-factory=configured,mechanism-configurations=[{mechanism-name=JBOSS-LOCAL-USER}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/sasl-authentication-factory=exampleSaslAuthenticationFactory:add(security-domain=exampleSecurityDomain,sasl-server-factory=configured,mechanism-configurations=[{mechanism-name=JBOSS-LOCAL-USER}])
    Copy to Clipboard Toggle word wrap

  4. 관리 인터페이스에 대해 SASL 인증 팩토리를 활성화합니다.

    구문

    /core-service=management/management-interface=http-interface:write-attribute(name=http-upgrade,value={enabled=true,sasl-authentication-factory=<sasl_auth_factory_name>})
    Copy to Clipboard Toggle word wrap

    예제

    /core-service=management/management-interface=http-interface:write-attribute(name=http-upgrade,value={enabled=true,sasl-authentication-factory=exampleSaslAuthenticationFactory})
    Copy to Clipboard Toggle word wrap

  5. 관리 인터페이스를 다시 로드합니다.

    $ reload
    Copy to Clipboard Toggle word wrap

4장. Elytron에서 감사 로깅 구성

Elytron을 사용하여 트리거 이벤트에 대한 보안 감사를 완료할 수 있습니다. 보안 감사는 권한 부여 또는 인증 시도에 대한 응답으로 로그에 대한 쓰기와 같은 이벤트를 트리거하는 것을 나타냅니다.

이벤트에서 수행되는 보안 감사 유형은 보안 영역 구성에 따라 다릅니다.

4.1. Elytron 감사 로깅

elytron 하위 시스템을 사용하여 감사 로깅을 활성화한 후 애플리케이션 서버 내에서 Elytron 인증 및 권한 부여 이벤트를 로깅할 수 있습니다. Elytron은 감사 로그 항목을 JSON 또는 ScanSetting PLE 형식으로 저장합니다. 사람이 읽을 수 있는 텍스트 형식 또는 JSON 에 개별 이벤트를 저장하기 위해 ScanSetting PLE 을 사용합니다.

Elytron 감사 로깅은 JBoss EAP 관리 인터페이스의 감사 로깅과 같은 다른 유형의 감사 로깅과 다릅니다.

Elytron은 기본적으로 감사 로깅을 비활성화하지만 다음 로그 처리기를 구성하여 감사 로깅을 활성화할 수 있습니다. 보안 도메인에 로그 처리기를 추가할 수도 있습니다.

aggregate-security-event-listener 리소스 를 사용하여 로거와 같은 더 많은 대상에 보안 이벤트를 보낼 수 있습니다. aggregate-security-event-listener 리소스는 집계 리스너 정의에 지정된 모든 리스너에 모든 이벤트를 제공합니다.

4.2. Elytron에서 파일 감사 로깅 활성화

파일 감사 로깅은 감사 로그 메시지를 파일 시스템 내의 단일 파일에 저장합니다.

기본적으로 Elytron은 local-audit 를 파일 감사 로거로 지정합니다.

독립 실행형 서버의 EAP_HOME/standalone/log/audit.log 또는 관리형 도메인에 대한 EAP_HOME/domain/log/audit.log 에 Elytron 감사 로그를 쓸 수 있도록 local-audit 를 활성화해야 합니다.

사전 요구 사항

프로세스

  1. 파일 감사 로그를 생성합니다.

    구문

    /subsystem=elytron/file-audit-log=<audit_log_name>:add(path="<path_to_log_file>",format=<format_type>,synchronized=<whether_to_log_immediately>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/file-audit-log=exampleFileAuditLog:add(path="file-audit.log",relative-to=jboss.server.log.dir,format=SIMPLE,synchronized=true)
    Copy to Clipboard Toggle word wrap

  2. 보안 도메인에 파일 감사 로그를 추가합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener,value=<audit_log_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:write-attribute(name=security-event-listener,value=exampleFileAuditLog)
    Copy to Clipboard Toggle word wrap

검증

  1. 브라우저에서 보안 애플리케이션에 로그인합니다.

    예를 들어 보안 도메인을 사용하여 애플리케이션 사용자를 인증하고 권한을 부여하는 데 생성된 애플리케이션에 로그인하려면 http://localhost:8080/simple-webapp-example/secured 로 이동한 후 로그인합니다.

  2. 감사 로그를 저장하도록 구성된 디렉터리로 이동합니다. 프로세스에서 예제 명령을 사용하는 경우 디렉터리는 EAP_HOME/standalone/log입니다.

    file-audit.log 파일이 생성됩니다. 애플리케이션에 로그인하여 트리거한 이벤트의 로그를 포함합니다.

    file-audit.log 파일 예

    2023-10-24 23:31:04,WARNING,{event=SecurityPermissionCheckSuccessfulEvent,event-time=2023-10-24 23:31:04,security-identity=[name=user1,creation-time=2023-10-24 23:31:04],success=true,permission=[type=org.wildfly.security.auth.permission.LoginPermission,actions=,name=]}
    2023-10-24 23:31:04,WARNING,{event=SecurityAuthenticationSuccessfulEvent,event-time=2023-10-24 23:31:04,security-identity=[name=user1,creation-time=2023-10-24 23:31:04],success=true}
    Copy to Clipboard Toggle word wrap

4.3. Elytron에서 주기적으로 파일 감사 로깅 활성화

elytron 하위 시스템을 사용하여 독립 실행형 서버에 대해 주기적으로 파일 감사 로깅을 활성화하거나 관리형 도메인으로 실행되는 서버를 활성화할 수 있습니다.

정기적으로 파일 감사 로깅을 순환하면 구성된 일정에 따라 감사 로그 파일이 자동으로 순환됩니다. 주기적으로 파일 감사 로깅은 기본 파일 감사 로깅과 유사하지만 주기적으로 파일 감사 로깅에는 추가 속성인 접미사 가 포함되어 있습니다.

접미사 특성의 값은 .yyyy-MM-dd 와 같은 java.time.format.DateTimeFormatter 형식을 사용하여 지정된 날짜입니다. Elytron은 접미사로 제공된 값에서 순환 기간을 자동으로 계산합니다. elytron 하위 시스템은 로그 파일 이름의 끝에 접미사를 추가합니다.

사전 요구 사항

프로세스

  1. 주기적인 회전 파일 감사 로그를 생성합니다.

    구문

    /subsystem=elytron/periodic-rotating-file-audit-log=<periodic_audit_log_name>:add(path="<periodic_audit_log_filename>",format=<record_format>,synchronized=<whether_to_log_immediately>,suffix="<suffix_in_DateTimeFormatter_format>")
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/periodic-rotating-file-audit-log=examplePreiodicFileAuditLog:add(path="periodic-file-audit.log",relative-to=jboss.server.log.dir,format=SIMPLE,synchronized=true,suffix="yyyy-MM-dd")
    Copy to Clipboard Toggle word wrap

  2. 보안 도메인에 주기적으로 파일 감사 로거를 추가합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener,value=<periodic_audit_log_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:write-attribute(name=security-event-listener,value=examplePreiodicFileAuditLog)
    Copy to Clipboard Toggle word wrap

검증

  1. 브라우저에서 보안 애플리케이션에 로그인합니다.

    예를 들어 보안 도메인을 사용하여 애플리케이션 사용자를 인증하고 권한을 부여하는 데 생성된 애플리케이션에 로그인하려면 http://localhost:8080/simple-webapp-example/secured 로 이동한 후 로그인합니다.

  2. 감사 로그를 저장하도록 구성된 디렉터리로 이동합니다. 프로세스에서 예제 명령을 사용하는 경우 디렉터리는 EAP_HOME/standalone/log입니다.

    periodic-file-audit.log 라는 파일이 생성됩니다. 애플리케이션에 로그인하여 트리거한 이벤트의 로그를 포함합니다.

    periodic-file-audit.log 파일의 예

    2023-10-24 23:31:04,WARNING,{event=SecurityPermissionCheckSuccessfulEvent,event-time=2023-10-24 23:31:04,security-identity=[name=user1,creation-time=2023-10-24 23:31:04],success=true,permission=[type=org.wildfly.security.auth.permission.LoginPermission,actions=,name=]}
    2023-10-24 23:31:04,WARNING,{event=SecurityAuthenticationSuccessfulEvent,event-time=2023-10-24 23:31:04,security-identity=[name=user1,creation-time=2023-10-24 23:31:04],success=true}
    Copy to Clipboard Toggle word wrap

4.4. Elytron에서 크기 회전 파일 감사 로깅 활성화

elytron 하위 시스템을 사용하여 독립 실행형 서버의 크기 회전 파일 감사 로깅 또는 관리형 도메인으로 실행되는 서버를 활성화할 수 있습니다.

로그 파일이 구성된 파일 크기에 도달하면 감사 로그 파일을 자동으로 회전합니다. 파일 감사 로깅 크기 교체는 기본 파일 감사 로깅과 유사하지만 크기 회전 파일 감사 로깅에는 추가 속성이 포함됩니다.

로그 파일 크기가 rotate-size 특성에 정의된 제한을 초과하면 Elytron은 접미사 .1 을 현재 파일의 끝에 추가하고 새 로그 파일을 만듭니다. 기존 로그 파일마다 Elytron이 접미사를 하나씩 늘립니다. 예를 들어 Elytron은 audit_log.1 의 이름을 audit_log.2 로 변경합니다. Elytron은 로그 파일 양이 max-backup-index 로 정의된 대로 최대 로그 파일 수에 도달할 때까지 계속 증가합니다. 로그 파일이 max-backup-index 값을 초과하면 Elytron은 파일을 제거합니다. 예를 들어 max-backup-index 가 "98"를 max-backup-index 값으로 정의하는 경우 audit_log.99 파일은 제한을 초과합니다.

사전 요구 사항

프로세스

  1. 크기 회전 파일 감사 로그를 생성합니다.

    구문

    /subsystem=elytron/size-rotating-file-audit-log=<audit_log_name>:add(path="<path_to_log_file>",format=<record_format>,synchronized=<whether_to_log_immediately>,rotate-size="<max_file_size_before_rotation>",max-backup-index=<max_number_of_backup_files>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/size-rotating-file-audit-log=exampleSizeFileAuditLog:add(path="size-file-audit.log",relative-to=jboss.server.log.dir,format=SIMPLE,synchronized=true,rotate-size="10m",max-backup-index=10)
    Copy to Clipboard Toggle word wrap

  2. 보안 도메인에 감사 로거 크기 교체를 추가합니다.

    구문

    /subsystem=elytron/security-domain=<domain_size_logger>:write-attribute(name=security-event-listener,value=<audit_log_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:write-attribute(name=security-event-listener,value=exampleSizeFileAuditLog)
    Copy to Clipboard Toggle word wrap

검증

  1. 브라우저에서 보안 애플리케이션에 로그인합니다.

    예를 들어 보안 도메인을 사용하여 애플리케이션 사용자를 인증하고 권한을 부여하는 데 생성된 애플리케이션에 로그인하려면 http://localhost:8080/simple-webapp-example/secured 로 이동한 후 로그인합니다.

  2. 감사 로그를 저장하도록 구성된 디렉터리로 이동합니다. 프로세스에서 예제 명령을 사용하는 경우 디렉터리는 EAP_HOME/standalone/log입니다.

    size-file-audit.log 라는 파일이 생성됩니다. 애플리케이션에 로그인하여 트리거한 이벤트의 로그를 포함합니다.

    size-file-audit.log 파일의 예

    2023-10-24 23:31:04,WARNING,{event=SecurityPermissionCheckSuccessfulEvent,event-time=2023-10-24 23:31:04,security-identity=[name=user1,creation-time=2023-10-24 23:31:04],success=true,permission=[type=org.wildfly.security.auth.permission.LoginPermission,actions=,name=]}
    2023-10-24 23:31:04,WARNING,{event=SecurityAuthenticationSuccessfulEvent,event-time=2023-10-24 23:31:04,security-identity=[name=user1,creation-time=2023-10-24 23:31:04],success=true}
    Copy to Clipboard Toggle word wrap

4.5. Elytron에서 syslog 감사 로깅 활성화

elytron 하위 시스템을 사용하여 독립 실행형 서버에 대해 syslog 감사 로깅을 활성화하거나 관리형 도메인으로 실행되는 서버를 활성화할 수 있습니다. syslog 감사 로깅을 사용하는 경우 로깅 결과를 syslog 서버에 보내 로컬 파일에 로깅하는 것보다 더 많은 보안 옵션을 제공합니다.

syslog 처리기는 syslog 서버의 호스트 이름 및 syslog 서버가 수신 대기하는 포트와 같은 syslog 서버에 연결하는 데 사용되는 매개변수를 지정합니다. 여러 syslog 처리기를 정의하고 동시에 활성화할 수 있습니다.

지원되는 로그 형식에는 RFC5424RFC3164 가 포함됩니다. 지원되는 전송 프로토콜에는 UDP, TCP 및 SSL을 사용하는 TCP가 포함됩니다.

첫 번째 인스턴스에 대한 syslog 를 정의할 때 로거는 다음 예와 같이 메시지를 syslog 서버로 포함하는 INFORMATIONAL 우선순위 이벤트를 보냅니다.

"Elytron audit logging enabled with RFC format: <format>"
Copy to Clipboard Toggle word wrap

<format >은 감사 로깅 처리기에 대해 구성된 RFC(Request for Comments) 형식을 나타내며 기본값은 RFC5424 입니다.

사전 요구 사항

프로세스

  1. syslog 처리기를 추가합니다.

    구문

    /subsystem=elytron/syslog-audit-log=<syslog_audit_log_name>:add(host-name=<record_host_name>,port=<syslog_server_port_number>,server-address=<syslog_server_address>,format=<record_format>, transport=<transport_layer_protocol>)
    Copy to Clipboard Toggle word wrap

    TLS를 통해 syslog 서버에 로그를 보낼 수도 있습니다.

    TLS를 통해 로그를 전송하기 위한 syslog 구성의 구문

    /subsystem=elytron/syslog-audit-log=<syslog_audit_log_name>:add(transport=SSL_TCP,server-address=<syslog_server_address>,port=<syslog_server_port_number>,host-name=<record_host_name>,ssl-context=<client_ssl_context>)
    Copy to Clipboard Toggle word wrap

  2. 보안 도메인에 syslog 감사 로거를 추가합니다.

    구문

    /subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener,value=<syslog_audit_log_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/security-domain=exampleSecurityDomain:write-attribute(name=security-event-listener,value=exampleSyslog)
    Copy to Clipboard Toggle word wrap

4.6. Elytron에서 사용자 정의 보안 이벤트 리스너 사용

Elytron을 사용하여 사용자 지정 이벤트 리스너를 정의할 수 있습니다. 사용자 정의 이벤트 리스너는 들어오는 보안 이벤트를 처리합니다. 사용자 정의 감사 로깅 목적으로 이벤트 리스너를 사용하거나 이벤트 리스너를 사용하여 내부 ID 스토리지에 대해 사용자를 인증할 수 있습니다.

중요

모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 기능은 기술 프리뷰 기능으로만 제공됩니다. module 명령은 관리형 도메인에서 또는 원격 관리 CLI와 연결할 때 사용하기에 적합하지 않습니다. 프로덕션 환경에서 모듈을 수동으로 추가하거나 제거해야 합니다.

기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있으며 프로덕션에 사용하지 않는 것이 좋습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

기술 프리뷰 기능에 대한 지원 범위에 대한 정보는 Red Hat 고객 포털에서 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

프로세스

  1. java.util.function.Consumer<org.wildfly.security.auth.event.SecurityEvent > 인터페이스를 구현하는 클래스를 생성합니다.

    지정된 인터페이스를 사용하는 Java 클래스를 생성하는 예:

    public class MySecurityEventListener implements Consumer<SecurityEvent> {
        public void accept(SecurityEvent securityEvent) {
            if (securityEvent instanceof SecurityAuthenticationSuccessfulEvent) {
                System.err.printf("Authenticated user \"%s\"\n", securityEvent.getSecurityIdentity().getPrincipal());
            } else if (securityEvent instanceof SecurityAuthenticationFailedEvent) {
                System.err.printf("Failed authentication as user \"%s\"\n", ((SecurityAuthenticationFailedEvent)securityEvent).getPrincipal());
            }
        }
    }
    Copy to Clipboard Toggle word wrap

    예제의 Java 클래스는 사용자가 인증에 성공하거나 실패할 때마다 메시지를 출력합니다.

  2. 사용자 지정 이벤트 리스너를 JBoss EAP에 모듈로 제공하는 JAR 파일을 추가합니다.

    다음은 사용자 정의 이벤트 리스너를 Elytron에 모듈로 추가하는 관리 CLI 명령의 예입니다.

    모듈 명령을 사용하여 사용자 지정 이벤트 리스너를 Elytron에 모듈로 추가하는 예제입니다.

    /subsystem=elytron/custom-security-event-listener=<listener_name>:add(module=<module_name>, class-name=<class_name>)
    Copy to Clipboard Toggle word wrap

  3. 보안 도메인의 사용자 지정 이벤트 리스너를 참조합니다.

    ApplicationDomain 에서 사용자 지정 이벤트 리스너를 참조하는 예:

    /subsystem=elytron/security-domain=<domain_name>:write-attribute(name=security-event-listener, value=<listener_name>)
    Copy to Clipboard Toggle word wrap

  4. 서버를 다시 시작합니다.

    $ reload
    Copy to Clipboard Toggle word wrap

    이벤트 리스너는 지정된 보안 도메인에서 보안 이벤트를 수신합니다.

5장. reference

5.1. custom-realm 속성

특성을 설정하여 custom-realm 을 구성할 수 있습니다.

Expand
표 5.1. custom-realm 속성
속성설명

class-name

사용자 지정 영역 구현의 정규화된 클래스 이름입니다.

구성

사용자 지정 영역에 대한 선택적 키/값 구성입니다.

module

사용자 지정 영역을 로드하는 데 사용할 모듈의 이름입니다.

5.2. filesystem-realm 속성

속성을 설정하여 filesystem-realm 을 구성할 수 있습니다.

Expand
표 5.2. filesystem-realm 속성
속성설명

credential-store

영역의 일반 암호, 해시된 암호 및 속성을 암호화하고 해독하는 시크릿 키가 포함된 인증 정보 저장소에 대한 참조입니다. 이 속성을 사용하는 경우 secret-key 특성에 사용할 시크릿 키도 지정해야 합니다.

인코딩된

ID 이름을 파일 이름에 인코딩해야 하는지(Base32)를 저장해야 하는지 여부를 나타내는 속성입니다. 기본값은 true입니다.

hash-charset

password 문자열을 바이트 배열로 변환할 때 사용할 문자 집합입니다. 기본값은 UTF-8입니다.

해시 인코딩

일반 텍스트로 저장되지 않는 경우 암호의 문자열 형식입니다. 다음 중 하나일 수 있습니다.

  • base64
  • Hex

기본값은 base64입니다.

key-store

무결성을 확인하는 데 사용할 키 쌍이 포함된 키 저장소에 대한 참조입니다. 이 속성을 정의할 때 key-store-alias 특성에 키 저장소 별칭도 지정해야 합니다.

key-store-alias

무결성을 확인하는 데 사용할 키 저장소 내에서 개인 키 항목을 식별하는 별칭입니다. key-store 특성을 정의하여 키 저장소에 대한 참조를 추가한 경우 이 속성을 사용합니다.

수준

적용할 디렉터리 해시의 수준 수입니다. 기본값은 2입니다.

path

영역을 포함하는 디렉터리의 경로입니다.

relative-to

경로와 함께 사용할 사전 정의된 상대 경로입니다. 예: jboss.server.config.dir.

secret-key

영역의 일반 암호, 해시된 암호 및 특성을 암호화하고 해독하는 시크릿 키의 별칭입니다. credentials -store 속성을 정의하여 인증 정보 저장소에 참조를 추가한 경우 이 속성을 사용합니다.

5.3. file-audit-log 속성

Expand
표 5.3. file-audit-log 속성
속성설명

Autoflush

모든 감사 이벤트 이후 출력 스트림에 플러시가 필요한지 여부를 지정합니다. 특성을 정의하지 않으면 synchronized 특성 값이 기본값입니다.

인코딩

감사 파일 인코딩을 지정합니다. 기본값은 UTF-8 입니다. 가능한 값은 다음과 같습니다.

  • UTF-8
  • UTF-16BE
  • UTF-16LE
  • UTF-16
  • US-ASCII
  • ISO-8859-1

형식

기본값은 ScanSetting PLE 입니다. 사람이 읽을 수 있는 텍스트 형식 또는 JSON 에 개별 이벤트를 저장하기 위해 ScanSetting PLE 을 사용합니다.

path

로그 파일의 위치를 정의합니다.

relative-to

선택적 속성입니다. 로그 파일의 위치를 정의합니다.

synchronized

기본값은 true 입니다. 모든 감사 이벤트 후에 파일 설명자가 동기화되도록 지정합니다.

5.4. HTTP-authentication-factory 속성

속성을 설정하여 http-authentication-factory 를 구성할 수 있습니다.

Expand
표 5.4. HTTP-authentication-factory 속성
속성설명

http-server-mechanism-factory

리소스와 연결할 CryostatAuthenticationMechanismFactory 입니다.

mechanism-configurations

메커니즘별 구성 목록입니다.

security-domain

리소스와 연결할 보안 도메인입니다.

Expand
표 5.5. HTTP-authentication-factory mechanism-configurations 속성
속성설명

credential-security-factory

메커니즘에 필요한 대로 인증 정보를 얻는 데 사용할 보안 팩토리입니다.

final-principal-transformer

이 메커니즘 영역에 적용할 최종 주요 변환기입니다.

host-name

이 구성이 적용되는 호스트 이름입니다.

mechanism-name

이 구성은 지정된 이름의 메커니즘이 사용되는 경우에만 적용됩니다. 이 속성이 생략되면 모든 메커니즘 이름과 일치합니다.

mechanism-realm-configurations

메커니즘에서 이해할 수 있는 영역 이름의 정의 목록입니다.

pre-realm-principal-transformer

영역을 선택하기 전에 적용할 주요 변환기입니다.

post-realm-principal-transformer

영역을 선택한 후 적용할 주요 변환기입니다.

프로토콜

이 구성이 적용되는 프로토콜입니다.

realm-mapper

메커니즘에서 사용할 영역 매퍼입니다.

Expand
표 5.6. HTTP-authentication-factory mechanism-configurations mechanism-realm-configurations 속성
속성설명

final-principal-transformer

이 메커니즘 영역에 적용할 최종 주요 변환기입니다.

post-realm-principal-transformer

영역을 선택한 후 적용할 주요 변환기입니다.

pre-realm-principal-transformer

영역을 선택하기 전에 적용할 주요 변환기입니다.

realm-mapper

메커니즘에서 사용할 영역 매퍼입니다.

realm-name

메커니즘에서 제공할 영역의 이름입니다.

5.5. identity-realm 속성

해당 속성을 설정하여 identity-realm 을 구성할 수 있습니다.

Expand
표 5.7. identity-realm 속성
속성설명

attribute-name

이 ID와 연결된 속성의 이름입니다.

attribute-values

ID 특성과 연결된 값 목록입니다.

ID

보안 영역에서 사용할 수 있는 ID입니다.

5.6. JDBC-realm 속성

속성을 설정하여 jdbc-realm 을 구성할 수 있습니다.

Expand
표 5.8. JDBC-realm 속성
속성설명

hash-charset

password 문자열을 바이트 배열로 변환할 때 사용할 문자 집합입니다. 기본값은 UTF-8입니다.

principal-query

특정 키 유형에 따라 사용자를 인증하는 데 사용되는 인증 쿼리 목록입니다.

Expand
표 5.9. JDBC-realm principal-query Attributes
속성설명

attribute-mapping

이 리소스에 대해 정의된 속성 매핑 목록입니다.

bcrypt-mapper

SQL 쿼리에서 반환된 열을 Bcrypt 키 유형에 매핑하는 키 매퍼입니다.

clear-password-mapper

SQL 쿼리에서 반환된 열을 명확한 암호 키 유형에 매핑하는 키 매퍼입니다. 여기에는 사용자 암호를 나타내는 인증 쿼리의 열 인덱스인 password-index 하위 요소가 있습니다.

data-source

데이터베이스에 연결하는 데 사용되는 데이터 소스의 이름입니다.

salted-simple-digest-mapper

SQL 쿼리에서 반환된 열을 Salted Simple Digest 키 유형에 매핑하는 키 매퍼입니다.

scram-mapper

SQL 쿼리에서 반환된 열을 SCRAM 키 유형에 매핑하는 키 매퍼입니다.

simple-digest-mapper

SQL 쿼리에서 반환된 열을 Simple Digest 키 유형에 매핑하는 키 매퍼입니다.

sql

키를 특정 사용자의 테이블 열로 가져와 해당 유형과 적절하게 매핑하는 데 사용되는 SQL 문입니다.

Expand
표 5.10. JDBC-realm principal-query attribute-mapping Attributes
속성설명

인덱스

매핑된 특성을 나타내는 SQL 쿼리의 열 인덱스입니다.

다음으로 변경

SQL 쿼리에서 반환된 열에서 매핑된 ID 특성의 이름입니다.

5.7. key-store 속성

해당 속성을 설정하여 키 저장소를 구성할 수 있습니다.

Expand
표 5.11. key-store 속성
속성설명

alias-filter

키 저장소에서 반환된 별칭에 적용되는 필터는 쉼표로 구분된 별칭 목록 중 하나 또는 다음 형식 중 하나일 수 있습니다.

  • ALL:-alias1:-alias2
  • NONE:+alias1:+alias2
참고

alias-filter 속성은 대소문자를 구분합니다. elytronAppServer 와 같은 혼합 케이스 또는 대문자 별칭을 사용하는 경우 일부 키 저장소 공급자에서 인식하지 못할 수 있으므로 elytronappserver 와 같은 소문자 별칭을 사용하는 것이 좋습니다.

credential-reference

키 저장소에 액세스하는 데 사용할 암호입니다. 이는 일반 텍스트로 지정하거나 인증 정보 저장소에 저장된 인증 정보에 대한 참조로 지정할 수 있습니다.

path

키 저장소 파일의 경로입니다.

provider-name

키 저장소를 로드하는 데 사용할 공급자의 이름입니다. 이 속성을 설정하면 지정된 유형의 키 저장소를 생성할 수 있는 첫 번째 공급자에 대한 검색이 비활성화됩니다.

공급자

검색할 공급자 인스턴스 목록을 가져오는 데 사용해야 하는 공급자에 대한 참조입니다. 지정하지 않으면 글로벌 공급자 목록이 대신 사용됩니다.

relative-to

이 저장소가 상대적인 기본 경로입니다. 이는 전체 경로이거나 jboss.server.config.dir 과 같은 사전 정의된 경로일 수 있습니다.

필수 항목

true 로 설정하면 참조하는 키 저장소 파일이 키 저장소 서비스가 시작될 때 존재해야 합니다. 기본값은 false입니다.

type

키 저장소의 유형입니다(예: JKS ).

참고

다음 키 저장소 유형이 자동으로 감지됩니다.

  • JKS
  • JCEKS
  • PKCS12
  • BKS
  • BCFKS
  • UBER

다른 키 저장소 유형을 수동으로 지정해야 합니다.

주요 저장소 유형의 전체 목록은 Oracle JDK 문서의 Java Cryptography Architecture Standard Algorithm Name Documentation for JDK 11 에서 확인할 수 있습니다.

5.8. LDAP-realm 속성

특성을 설정하여 ldap-realm 을 구성할 수 있습니다.

Expand
표 5.12. LDAP-realm 속성
속성설명

allow-blank-password

이 영역에서 빈 암호 직접 확인을 지원하는지 여부입니다. 이 속성을 설정하지 않으면 빈 암호 시도가 거부됩니다.

dir-context

LDAP 서버 연결에 사용되는 dir-context 의 이름입니다.

direct-verification

이 속성이 true 로 설정된 경우 이 영역은 인증되는 계정으로 LDAP에 직접 연결하여 인증 정보 확인을 지원합니다. 그렇지 않으면 LDAP 서버에서 암호를 검색하고 JBoss EAP에서 확인합니다. 활성화된 경우 JBoss EAP 서버는 클라이언트에서 일반 사용자 암호를 가져올 수 있어야 합니다. 이 경우 인증에 사용할 PLAIN SASL 또는 BASIC HTTP 메커니즘이 필요합니다. 기본값은 false입니다.

hash-charset

password 문자열을 바이트 배열로 변환할 때 사용할 문자 집합입니다. 기본값은 UTF-8입니다.

해시 인코딩

일반 텍스트로 저장되지 않는 경우 암호의 문자열 형식입니다. 다음 중 하나일 수 있습니다.

  • base64
  • Hex

기본값은 base64입니다.

identity-mapping

주체가 기본 LDAP 서버의 해당 항목에 매핑되는 방법을 정의하는 구성 옵션입니다.

Expand
표 5.13. LDAP-realm identity-mapping 속성
속성설명

attribute-mapping

이 리소스에 대해 정의된 속성 매핑 목록입니다.

filter-name

이름으로 ID를 가져오는 LDAP 필터입니다.

iterator-filter

영역의 ID를 반복하는 LDAP 필터입니다.

new-identity-attributes

새로 생성된 ID의 속성 목록입니다. 영역의 수정 가능성에 필요합니다. 이름 쌍 오브젝트 목록입니다.

new-identity-parent-dn

새로 생성된 ID의 부모 DN입니다. 영역의 수정 가능성에 필요합니다.

otp-credential-mapper

OTP 인증 정보의 인증 정보 매핑입니다.

rdn-identifier

LDAP 항목에서 주체의 이름을 가져오는 데 사용할 주체 DN의 RDN 부분입니다. 이는 새 ID를 생성할 때도 사용됩니다.

search-base-dn

ID를 검색할 기본 DN입니다.

use-recursive-search

이 속성이 true 로 설정된 경우 ID 검색 쿼리는 재귀적입니다. 기본값은 false입니다.

user-password-mapper

userPassword와 유사한 인증 정보의 인증 정보 매핑입니다.

x509-credential-mapper

LDAP를 X509 자격 증명의 스토리지로 사용할 수 있는 구성입니다. -from 하위 속성이 정의되지 않은 경우 이 구성은 무시됩니다. -from 하위 속성이 여러 개 정의되어 있는 경우 사용자 인증서는 정의된 모든 기준과 일치해야 합니다.

Expand
표 5.14. LDAP-realm identity-mapping attribute-mapping 속성
속성설명

extract-rdn

raw 형식의 값이 X.500 형식인 경우 속성 값으로 사용할 RDN 키입니다.

filter

특정 속성의 값을 가져오는 데 사용할 필터입니다. {0} 문자열은 사용자 ID DN으로 사용자 이름 및{1}'로 교체됩니다.

filter-base-dn

필터를 수행해야 하는 컨텍스트의 이름입니다.

from

ID 속성에 매핑할 LDAP 속성의 이름입니다. 정의되지 않은 경우 DN of entry가 사용됩니다.

reference

값을 가져올 항목의 DN이 포함된 LDAP 속성의 이름입니다.

role-recursion

재귀 역할 할당의 최대 깊이입니다. 재귀를 지정하지 않으려면 0 을 사용합니다. 기본값은 0 입니다.

role-recursion-name

역할의 역할을 검색할 때 filter-name 에서 "{0}"을 대체할 역할 항목의 LDAP 특성을 결정합니다.

search-recursive

true 속성 LDAP 검색 쿼리가 재귀적인 경우 기본값은 true 입니다.

다음으로 변경

특정 LDAP 속성에서 매핑된 ID 속성의 이름입니다. 제공되지 않는 경우 속성 이름은 의 에 정의된 것과 동일합니다. from 도 정의되지 않은 경우 dn 값이 사용됩니다.

Expand
표 5.15. LDAP-realm identity-mapping user-password-mapper 속성
속성설명

from

ID 속성에 매핑할 LDAP 속성의 이름입니다. 정의되지 않은 경우 DN of entry가 사용됩니다.

확인 가능

true 암호를 사용하여 사용자를 확인할 수 있습니다. 기본값은 true 입니다.

writable

true 암호를 변경할 수 있는 경우 기본값은 false입니다.

Expand
표 5.16. LDAP-realm identity-mapping otp-credential-mapper 특성
속성설명

algorithm-from

OTP 알고리즘의 LDAP 속성 이름입니다.

hash-from

OTP 해시 함수의 LDAP 속성 이름입니다.

seed-from

OTP 시드의 LDAP 속성 이름입니다.

sequence-from

OTP 시퀀스 번호의 LDAP 속성 이름입니다.

Expand
표 5.17. LDAP-realm identity-mapping x509-credential-mapper 특성
속성설명

certificate-from

인코딩된 사용자 인증서에 매핑할 LDAP 속성의 이름입니다. 정의되지 않은 경우 인코딩된 인증서가 확인되지 않습니다.

digest-algorithm

사용자 인증서의 다이제스트를 계산하는 데 사용되는 해시 함수인 다이제스트 알고리즘입니다. digest-from 이 정의된 경우에만 사용됩니다.

digest-from

사용자 인증서 다이제스트에 매핑할 LDAP 속성의 이름입니다. 정의되지 않은 경우 인증서 다이제스트가 확인되지 않습니다.

serial-number-from

사용자 인증서의 일련 번호에 매핑할 LDAP 속성의 이름입니다. 정의되지 않은 경우 일련 번호가 확인되지 않습니다.

subject-dn-from

사용자 인증서의 제목 DN에 매핑할 LDAP 속성의 이름입니다. 정의되지 않은 경우 제목 DN이 확인되지 않습니다.

5.9. 암호 매퍼 속성

암호 매퍼는 다음 알고리즘 유형 중 하나를 사용하여 데이터베이스의 여러 필드의 암호를 구성합니다.

  • 텍스트 지우기
  • 간단한 다이제스트
  • Salted simple digest
  • bcrypt
  • SCRAM
  • 모듈식 암호

암호 매퍼에는 다음과 같은 속성이 있습니다.

참고

첫 번째 열의 인덱스는 모든 매퍼의 1 입니다.

Expand
표 5.18. 암호 매퍼 속성
매퍼 이름속성암호화 방법

clear-password-mapper

  • password-index

    일반 텍스트 암호가 포함된 열의 인덱스입니다.

암호화 없음.

simple-digest

  • password-index

    암호 해시가 포함된 열의 인덱스입니다.

  • 알고리즘

    사용된 해시 알고리즘입니다. 지원되는 값은 다음과 같습니다.

    • simple-digest-md2
    • simple-digest-md5
    • simple-digest-sha-1
    • simple-digest-sha-256
    • simple-digest-sha-384
    • simple-digest-sha-512
  • 해시 인코딩

    표현 해시를 지정합니다. 허용되는 값:

    • base64 (기본값)
    • hex

간단한 해시 메커니즘이 사용됩니다.

salted-simple-digest

  • password-index

    암호 해시가 포함된 열의 인덱스입니다.

  • 알고리즘

    사용된 해시 알고리즘입니다. 지원되는 값은 다음과 같습니다.

    • password-salt-digest-md5
    • password-salt-digest-sha-1
    • password-salt-digest-sha-256
    • password-salt-digest-sha-384
    • password-salt-digest-sha-512
    • salt-password-digest-md5
    • salt-password-digest-sha-1
    • salt-password-digest-sha-256
    • salt-password-digest-sha-384
    • salt-password-digest-sha-512
  • salt-index

    해시에 사용되는 Salt가 포함된 열의 인덱스입니다.

  • 해시 인코딩

    해시에 대한 표현을 지정합니다. 허용되는 값:

    • base64 (기본값)
    • hex
  • salt-encoding

    Salt에 대한 표현을 지정합니다. 허용되는 값:

    • base64 (기본값)
    • hex

간단한 해시 메커니즘은 Salt와 함께 사용됩니다.

bcrypt-password-mapper

  • password-index

    암호 해시가 포함된 열의 인덱스입니다.

  • salt-index

    해시에 사용되는 Salt가 포함된 열의 인덱스입니다.

  • iteration-count-index

    사용되는 반복 횟수가 포함된 열의 인덱스입니다.

  • 해시 인코딩

    해시에 대한 표현을 지정합니다. 허용되는 값:

    • base64 (기본값)
    • hex
  • salt-encoding

    Salt에 대한 표현을 지정합니다. 허용되는 값:

    • base64 (기본값)
    • hex

해시에 사용되는 Blowfish 알고리즘입니다.

scram-mapper

  • password-index

    암호 해시가 포함된 열의 인덱스입니다.

  • 알고리즘

    사용된 해시 알고리즘입니다. 지원되는 값은 다음과 같습니다.

    • scram-sha-1
    • scram-sha-256
    • scram-sha-384
    • scram-sha-512
  • salt-index

    Salt가 포함된 열의 인덱스는 해시에 사용됩니다.

  • iteration-count-index

    사용되는 반복 횟수가 포함된 열의 인덱스입니다.

  • 해시 인코딩

    해시에 대한 표현을 지정합니다. 허용되는 값:

    • base64 (기본값)
    • hex
  • salt-encoding

    Salt에 대한 표현을 지정합니다. 허용되는 값:

    • base64 (기본값)
    • hex

Salted Challenge Response Authentication 메커니즘은 해시에 사용됩니다.

modular-crypt-mapper

  • password-index

    암호화된 암호가 포함된 열의 인덱스입니다.

모듈식-crypt 인코딩은 단일 문자열로 인코딩할 수 있는 여러 가지 정보를 지원합니다. 정보는 다음을 포함할 수 있습니다.

  • 암호 유형
  • 해시 또는 다이제스트
  • Salt
  • 반복 횟수

5.10. periodic-rotating-file-audit-log 속성

Expand
표 5.19. periodic-rotating-file-audit-log 속성
속성설명

Autoflush

모든 감사 이벤트 이후 출력 스트림에 플러시가 필요한지 여부를 지정합니다. 특성을 정의하지 않으면 synchronized 특성 값이 기본값입니다.

인코딩

감사 파일 인코딩을 지정합니다. 기본값은 UTF-8 입니다. 가능한 값은 다음과 같습니다.

  • UTF-8
  • UTF-16BE
  • UTF-16LE
  • UTF-16
  • US-ASCII
  • ISO-8859-1

형식

사람이 읽을 수 있는 텍스트 형식 또는 JSON 에 개별 이벤트를 저장하기 위해 ScanSetting PLE 을 사용합니다.

path

로그 파일의 위치를 정의합니다.

relative-to

선택적 속성입니다. 로그 파일의 위치를 정의합니다.

suffix

선택적 속성입니다. 순환된 로그에 날짜 접미사를 추가합니다. java.time.format.DateTimeFormatter 형식을 사용해야 합니다. 예: .yyy-MM-dd.

synchronized

기본값은 true 입니다. 모든 감사 이벤트 후에 파일 설명자가 동기화되도록 지정합니다.

5.11. properties-realm 속성

속성을 설정하여 properties-realm 을 구성할 수 있습니다.

Expand
표 5.20. properties-realm 속성
속성설명

groups-attribute

반환된 AuthorizationIdentity 의 속성 이름입니다. 여기에는 ID에 대한 그룹 멤버십 정보가 포함되어야 합니다.

groups-properties

사용자 및 해당 그룹이 포함된 속성 파일입니다.

hash-charset

클라이언트 제공 암호 문자열을 해시 계산을 위해 바이트 배열로 변환할 때 사용할 문자 세트의 이름을 지정합니다. 기본적으로 UTF-8 로 설정합니다.

해시 인코딩

암호가 일반 텍스트로 저장되지 않는 경우 해시된 암호의 문자열 형식을 지정합니다. 두 가지 중 하나를 지정할 수 있습니다. 16진수 또는 base64. properties-realm 의 경우 기본적으로 16진수 로 설정합니다.

users-properties

사용자 및 해당 암호가 포함된 속성 파일입니다.

Expand
표 5.21. properties-realm users-properties 속성
속성설명

digest-realm-name

속성 파일에서 발견되지 않는 경우 다이제스트된 암호에 사용할 기본 영역 이름입니다.

path

사용자와 암호를 포함하는 파일의 경로입니다. 파일에는 영역 이름 선언이 포함되어야 합니다.

plain-text

true 인 경우 일반 텍스트에 저장된 속성 파일의 암호입니다. false 인 경우 HEX(username ':' realm ':' password) 의 양식을 사용하여 사전 해시됩니다. 기본값은 false입니다.

relative-to

경로가 상대적인 사전 정의된 경로입니다.

Expand
표 5.22. properties-realm groups-properties 속성
속성설명

path

사용자 및 해당 그룹을 포함하는 파일의 경로입니다.

relative-to

경로가 상대적인 사전 정의된 경로입니다.

5.12. SASL-authentication-factory 속성

sasl-authentication-factory 는 특성을 설정하여 구성할 수 있습니다.

Expand
표 5.23. SASL-authentication-factory 속성
속성설명

mechanism-configurations

메커니즘별 구성 목록입니다.

sasl-server-factory

이 리소스와 연결할 SASL 서버 팩토리입니다.

security-domain

이 리소스와 연결할 보안 도메인입니다.

Expand
표 5.24. SASL-authentication-factory mechanism-configurations 속성
속성설명

credential-security-factory

메커니즘에 필요한 대로 인증 정보를 얻는 데 사용할 보안 팩토리입니다.

final-principal-transformer

이 메커니즘 영역에 적용할 최종 주요 변환기입니다.

host-name

이 구성이 적용되는 호스트 이름입니다.

mechanism-name

이 구성은 지정된 이름의 메커니즘이 사용되는 경우에만 적용됩니다. 이 속성이 생략되면 모든 메커니즘 이름과 일치합니다.

mechanism-realm-configurations

메커니즘에서 이해할 수 있는 영역 이름의 정의 목록입니다.

프로토콜

이 구성이 적용되는 프로토콜입니다.

post-realm-principal-transformer

영역을 선택한 후 적용할 주요 변환기입니다.

pre-realm-principal-transformer

영역을 선택하기 전에 적용할 주요 변환기입니다.

realm-mapper

메커니즘에서 사용할 영역 매퍼입니다.

Expand
표 5.25. SASL-authentication-factory mechanism-configurations-realm-configurations 속성
속성설명

final-principal-transformer

이 메커니즘 영역에 적용할 최종 주요 변환기입니다.

post-realm-principal-transformer

영역을 선택한 후 적용할 주요 변환기입니다.

pre-realm-principal-transformer

영역을 선택하기 전에 적용할 주요 변환기입니다.

realm-mapper

메커니즘에서 사용할 영역 매퍼입니다.

realm-name

메커니즘에서 제공할 영역의 이름입니다.

5.13. secret-key-credential-store 속성

속성을 설정하여 secret-key-credential-store 를 구성할 수 있습니다.

Expand
표 5.26. secret-key-credential-store 속성
속성설명

create

Elytron이 아직 존재하지 않는 경우 값을 false 로 설정합니다. 기본값은 true 입니다.

default-alias

기본적으로 생성된 키의 별칭 이름입니다. 기본값은 key 입니다.

key-size

생성된 키의 크기입니다. 기본 크기는 256비트입니다. 다음 중 하나로 값을 설정할 수 있습니다.

  • 128
  • 192
  • 256

path

인증 정보 저장소의 경로입니다.

채우기

인증 정보 저장소에 default-alias 가 포함되어 있지 않은 경우 이 속성은 Elytron을 생성할지 여부를 나타냅니다. 기본값은 true입니다.

relative-to

특성 경로가 상대적인 이전에 정의된 경로에 대한 참조입니다.

5.14. security-domain 속성

속성을 설정하여 security-domain 을 구성할 수 있습니다.

Expand
속성설명

default-realm

이 보안 도메인에 포함된 기본 영역입니다.

evidence-decoder

이 도메인에서 사용할 EvidenceDecoder에 대한 참조입니다.

outflow-anonymous

이 속성은 다음 시나리오에서 발생하는 익명 ID를 보안 도메인에 대한 outflow를 사용할 수 없는지 여부를 지정합니다.

  • 이 도메인을 신뢰하지 않습니다.
  • 도메인에 축소되는 ID는 해당 도메인에 존재하지 않습니다.

익명 ID는 해당 도메인에 대해 이전에 설정한 ID를 지웁니다.

outflow-security-domains

이 도메인의 보안 ID가 자동으로 흐름을 해제해야 하는 보안 도메인 목록입니다.

permission-mapper

이 도메인에서 사용할 PermissionMapper에 대한 참조입니다.

post-realm-principal-transformer

제공된 ID 이름에서 작동한 후 적용할 주요 변환기에 대한 참조입니다.

pre-realm-principal-transformer

영역을 선택하기 전에 적용할 주체 변환기에 대한 참조입니다.

principal-decoder

이 도메인에서 사용할 PrincipalDecoder에 대한 참조입니다.

realm-mapper

이 도메인에서 사용할 CryostatMapper에 대한 참조입니다.

realms

이 보안 도메인에 포함된 영역 목록입니다.

role-decoder

이 도메인에서 사용할 RoleDecoder에 대한 참조입니다.

role-mapper

이 도메인에서 사용할 RoleMapper에 대한 참조입니다.

security-event-listener

보안 이벤트에 대한 리스너에 대한 참조입니다.

trusted-security-domains

이 보안 도메인에서 신뢰하는 보안 도메인의 목록입니다.

trusted-virtual-security-domains

이 보안 도메인에서 신뢰하는 가상 보안 도메인 목록입니다.

5.15. simple-role-decoder 특성

특성을 설정하여 간단한 역할 디코더를 구성할 수 있습니다.

Expand
표 5.27. simple-role-decoder 특성
속성설명

attribute

역할에 직접 매핑할 ID의 속성 이름입니다.

5.16. size-rotating-file-audit-log 속성

Expand
표 5.28. size-rotating-file-audit-log 속성
속성설명

Autoflush

모든 감사 이벤트 이후 출력 스트림에 플러시가 필요한지 여부를 지정합니다. 특성을 정의하지 않으면 synchronized 특성 값이 기본값입니다.

인코딩

감사 파일 인코딩을 지정합니다. 기본값은 UTF-8 입니다. 가능한 값은 다음과 같습니다.

  • UTF-8
  • UTF-16BE
  • UTF-16LE
  • UTF-16
  • US-ASCII
  • ISO-8859-1

형식

기본값은 ScanSetting PLE 입니다. 사람이 읽을 수 있는 텍스트 형식 또는 JSON 에 개별 이벤트를 저장하기 위해 ScanSetting PLE 을 사용합니다.

max-backup-index

회전할 때 백업할 최대 파일 수입니다. 기본값은 1 입니다.

path

로그 파일의 위치를 정의합니다.

relative-to

선택적 속성입니다. 로그 파일의 위치를 정의합니다.

rotate-on-boot

기본적으로 Elytron은 서버를 다시 시작할 때 새 로그 파일을 생성하지 않습니다. 서버 재시작 시 로그를 교체하려면 이 속성을 true 로 설정합니다.

rotate-size

Elytron이 로그를 교체하기 전에 로그 파일에 도달할 수 있는 최대 크기입니다. 기본값은 10 MB의 경우 10m 입니다. k, g, b 또는 t 단위로 로그의 최대 크기를 정의할 수도 있습니다. 대문자 또는 소문자로 단위를 지정할 수 있습니다.

suffix

선택적 속성입니다. 순환된 로그에 날짜 접미사를 추가합니다. java.text.format.DateTimeFormatter 형식을 사용해야 합니다. 예: .yyy-MM-dd-HH.

synchronized

기본값은 true 입니다. 모든 감사 이벤트 후에 파일 설명자가 동기화되도록 지정합니다.

5.17. syslog-audit-log 속성

Expand
표 5.29. syslog-audit-log 속성
속성설명

형식

감사 이벤트가 기록된 형식입니다.

지원되는 값:

  • JSON
  • 단순

기본값:

  • 단순

host-name

syslog 서버로 전송된 모든 이벤트에 포함할 호스트 이름입니다.

port

syslog 서버의 수신 대기 포트입니다.

재연결-attempts

Elytron이 연결을 닫기 전에 연속 메시지를 syslog 서버에 전송하려고 시도하는 최대 횟수입니다. 이 속성의 값은 사용된 전송 프로토콜이 UDP인 경우에만 유효합니다.

지원되는 값:

  • 모든 양의 정수 값입니다.
  • -1 은 무제한 재연결 시도를 나타냅니다.

기본값:

  • 0

server-address

syslog 서버의 IP 주소 또는 Java의 InetAddress.getByName() 메서드로 확인할 수 있는 이름입니다.

ssl-context

syslog 서버에 연결할 때 사용할 SSL 컨텍스트입니다. 이 속성은 transportSSL_TCP 로 설정된 경우에만 필요합니다.

syslog-format

감사 이벤트를 설명하는 데 사용할 RFC 형식입니다.

지원되는 값:

  • RFC3164
  • RFC5424

기본값:

  • RFC5424

전송

syslog 서버에 연결하는 데 사용할 전송 계층 프로토콜입니다.

지원되는 값:

  • SSL_TCP
  • TCP
  • UDP

기본값:

  • TCP

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동