JBoss EAP에서 자격 증명의 보안 스토리지


Red Hat JBoss Enterprise Application Platform 8.0

인증 정보 저장소에 인증 정보를 안전하게 저장하는 가이드

Red Hat Customer Content Services

초록

인증 정보 저장소에 인증 정보를 안전하게 저장하는 가이드입니다.

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

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

프로세스

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

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

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

1장. Elytron에 인증 정보 및 인증 정보 저장소

1.1. Elytron에서 제공하는 인증 정보 저장소의 유형

Elytron은 인증 정보를 저장하는 데 사용할 수 있는 두 가지 기본 인증 정보 저장소 유형(KeyStoreCredentialStore 및 PropertiesCredentialStore)을 제공합니다. JBoss EAP 관리 CLI를 사용하여 인증 정보 저장소를 관리하거나 WildFly Elytron 툴을 사용하여 오프라인에서 관리할 수 있습니다. 두 가지 기본 저장소 유형 외에도 고유한 사용자 지정 인증 정보 저장소를 생성, 사용 및 관리할 수도 있습니다.

1.1.1. Elytron의 KeyStoreCredentialStore/credential-store

모든 Elytron 인증 정보 유형을 KeyStoreCredentialStore에 저장할 수 있습니다. elytron 하위 시스템의 KeyStoreCredentialStore의 리소스 이름은 credentials -store 입니다. KeyStoreCredentialStore는 JDK(Java Development Kit)의 KeyStore 구현에서 제공하는 메커니즘을 사용하여 인증 정보를 보호합니다.

다음과 같이 관리 CLI에서 KeyStoreCredentialStore에 액세스합니다.

/subsystem=elytron/credential-store
Copy to Clipboard Toggle word wrap

1.1.2. Elytron의 PropertiesCredentialStore/secret-key-credential-store

제대로 시작하려면 JBoss EAP에서 특정 보안 리소스의 잠금을 해제하려면 초기 키가 필요합니다. PropertiesCredentialStore를 사용하여 이러한 필요한 서버 리소스의 잠금을 해제하려면 이 초기 시크릿 키를 제공합니다. PropertiesCredentialStore를 사용하여 AES(Advanced Encryption Standard) 시크릿 키 저장을 지원하는 SecretKeyCredential를 저장할 수도 있습니다. 파일 시스템 권한을 사용하여 인증 정보 저장소에 대한 액세스를 제한합니다. 이 인증 정보 저장소에 대한 액세스를 제한하려면 애플리케이션 서버에만 액세스 권한을 부여해야 합니다.

PropertiesCredentialStore의 elytron 하위 시스템의 리소스 이름은 secret-key-credential-store 이며 다음과 같이 관리 CLI에서 액세스할 수 있습니다.

/subsystem=elytron/secret-key-credential-store
Copy to Clipboard Toggle word wrap

1.2. Elytron의 인증 정보 유형

Elytron은 다양한 보안 요구 사항에 맞게 다음 세 가지 인증 정보 유형을 제공하며 이러한 인증 정보를 Elytron의 인증 정보 저장소 중 하나에 저장할 수 있습니다.

PasswordCredential

이 인증 정보 유형을 사용하면 일반 텍스트 또는 암호화되지 않은 암호를 안전하게 저장할 수 있습니다. 암호가 필요한 JBoss EAP 리소스의 경우 일반 텍스트 암호 대신 PasswordCredential에 대한 참조를 사용하여 암호의 보안을 유지합니다.

데이터베이스에 연결하는 예

data-source add ... --user-name=db_user --password=StrongPassword
Copy to Clipboard Toggle word wrap

이 예제 database connection 명령에서 암호: StrongPassword 를 볼 수 있습니다. 즉, 다른 사용자가 서버 구성 파일에서도 볼 수 있습니다.

PasswordCredential을 사용하여 데이터베이스에 연결하는 예

data-source add ... --user-name=db_user --credential-reference={store=exampleKeyStoreCredentialStore, alias=passwordCredentialAlias}
Copy to Clipboard Toggle word wrap

암호 대신 인증 정보 참조를 사용하여 데이터베이스에 연결하는 경우 다른 사용자는 암호가 아닌 구성 파일에 인증 정보 참조만 볼 수 있습니다.

KeyPairCredential

SSH(Secure Shell) 및 PKI(Public-Key Cryptography Standards) 키 쌍을 KeyPairCredential로 사용할 수 있습니다. 키 쌍에는 공유 공개 키와 지정된 사용자만 알고 있는 개인 키가 모두 포함됩니다.

WildFly Elytron 툴만 사용하여 KeyPairCredential를 관리할 수 있습니다.

SecretKeyCredential
SecretKeyCredential는 Elytron에서 암호화된 표현식을 생성하는 데 사용할 수 있는 AES(Advanced Encryption Standard) 키입니다.

1.3. Elytron 인증 정보 저장소에서 지원하는 인증 정보 유형

다음 표는 인증 정보 저장소에서 지원하는 인증 정보 유형을 보여줍니다.

Expand
인증 정보 유형KeyStoreCredentialStore/credential-storePropertiesCredentialStore/secret-key-credential-store

PasswordCredential

제공됨

없음

KeyPairCredential

제공됨

없음

SecretKeyCredential

제공됨

제공됨

1.4. JBoss EAP 관리 CLI를 사용한 인증 정보 저장소 작업

실행 중인 JBoss EAP 서버에서 JBoss EAP 자격 증명을 관리하려면 제공된 관리 CLI 작업을 사용합니다. JBoss EAP 관리 CLI를 사용하여 PasswordCredentialSecretKeyCredential 를 관리할 수 있습니다.

참고

이러한 작업은 수정 가능한 인증 정보 저장소에서만 수행할 수 있습니다. 모든 인증 정보 저장소 유형은 기본적으로 수정 가능합니다.

1.4.1. 독립 실행형 서버에 대한 인증 정보 저장소 생성

파일 시스템의 모든 디렉터리에서 독립 실행형 서버로 실행되는 JBoss EAP의 자격 증명 저장소를 생성합니다. 보안을 위해 저장소를 포함하는 디렉터리에는 제한된 사용자만 액세스할 수 있어야 합니다.

사전 요구 사항

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

동일한 Elytron 기능을 구현하므로 credential-storesecret-key-credential-store 에 대해 동일한 이름을 가질 수 없습니다. org.wildfly.security.credential-store.

프로세스

  • 다음 관리 CLI 명령을 사용하여 KeyStoreCredentialStore를 생성합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:add(path="<path_to_store_file>", relative-to=<base_path_to_store_file>, credential-reference={clear-text=<store_password>}, create=true)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:add(path="exampleKeyStoreCredentialStore.jceks", relative-to=jboss.server.data.dir, credential-reference={clear-text=password}, create=true)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

1.4.2. 관리형 도메인의 인증 정보 저장소 생성

관리형 도메인에 인증 정보 저장소를 생성할 수 있지만 먼저 WildFly Elytron 툴을 사용하여 KeyStoreCredentialStore를 준비해야 합니다. 단일 관리형 도메인에 여러 호스트 컨트롤러가 있는 경우 다음 옵션 중 하나를 선택합니다.

  • 각 호스트 컨트롤러에서 인증 정보 저장소를 생성하고 각 인증 정보 저장소에 인증 정보를 추가합니다.
  • 하나의 호스트 컨트롤러에서 다른 모든 호스트 컨트롤러로 채워진 인증 정보 저장소를 복사합니다.
  • credentials -store 파일을 NFS(네트워크 파일 시스템)에 저장한 다음 생성한 모든 인증 정보 저장소 리소스에 해당 파일을 사용합니다.

또는 WildFly Elytron 툴을 사용하지 않고 호스트 컨트롤러에 인증 정보를 사용하여 인증 정보 저장소 파일을 생성할 수 있습니다.

참고

동일한 프로필의 모든 서버에 인증 정보 저장소 파일이 포함되어 있기 때문에 모든 서버에 인증 정보 저장소 리소스를 정의할 필요는 없습니다. credentials -store 파일은 서버 데이터 디렉터리 relative-to=jboss.server.data.dir 에서 찾을 수 있습니다.

중요

동일한 Elytron 기능을 구현하므로 credential-storesecret-key-credential-store 에 대해 동일한 이름을 가질 수 없습니다. org.wildfly.security.credential-store.

다음 절차에서는 NFS를 사용하여 모든 호스트 컨트롤러에 credentials -store 파일을 제공하는 방법을 설명합니다.

프로세스

  1. WildFly Elytron 툴을 사용하여 자격 증명 저장소 스토리지 파일을 생성합니다. 이에 대한 자세한 내용은 WildFly Elytron 툴 인증 정보 저장소 작업을 참조하십시오.
  2. 스토리지 파일을 배포합니다. 예를 들어 scp 명령을 사용하여 각 호스트 컨트롤러에 할당하거나 NFS에 저장하고 모든 인증 정보 저장소 리소스에 사용합니다.

    참고

    일관성을 유지하려면 여러 리소스 및 호스트 컨트롤러에서 사용하고 NFS에 저장한 인증 정보 저장소 파일의 경우 인증 정보 저장소를 읽기 전용 모드로 사용해야 합니다. 또한 인증 정보 저장소 파일에 대한 절대 경로를 제공해야 합니다.

    구문

    /profile=<profile_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<absolute_path_to_store_keystore>,credential-reference={clear-text="<store_password>"},create=false,modifiable=false)
    Copy to Clipboard Toggle word wrap

    예제

    /profile=full-ha/subsystem=elytron/credential-store=exampleCredentialStoreDomain:add(path=/usr/local/etc/example-cred-store.cs,credential-reference={clear-text="password"},create=false,modifiable=false)
    Copy to Clipboard Toggle word wrap

  3. 선택 사항: 프로필에 credentials -store 리소스를 정의해야 하는 경우 스토리지 파일을 사용하여 리소스를 생성합니다.

    구문

    /profile=<profile_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<path_to_store_file>,credential-reference={clear-text="<store_password>"})
    Copy to Clipboard Toggle word wrap

    예제

    /profile=full-ha/subsystem=elytron/credential-store=exampleCredentialStoreHA:add(path=/usr/local/etc/example-cred-store-ha.cs, credential-reference={clear-text="password"})
    Copy to Clipboard Toggle word wrap

  4. 선택 사항: 호스트 컨트롤러에 대한 인증 정보 저장소 리소스를 생성합니다.

    구문

    /host=<host_controller_name>/subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<path_to_store_file>,credential-reference={clear-text="<store_password>"})
    Copy to Clipboard Toggle word wrap

    예제

    /host=master/subsystem=elytron/credential-store=exampleCredentialStoreHost:add(path=/usr/local/etc/example-cred-store-host.cs, credential-reference={clear-text="password"})
    Copy to Clipboard Toggle word wrap

1.4.3. 독립 실행형 서버에 대한 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.4.4. 인증 정보 저장소에 암호 인증 정보추가

구성 파일에서 해당 암호를 숨기려면 암호 자격 증명으로 필요한 일반 텍스트 암호를 자격 증명 저장소에 추가합니다. 그런 다음 저장된 이 인증 정보를 참조하여 암호를 노출하지 않고도 해당 리소스에 액세스할 수 있습니다.

사전 요구 사항

프로세스

  • 인증 정보 저장소에 새 암호 인증 정보를 추가합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:add-alias(alias=<alias>, secret-value=<secret-value>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:add-alias(alias=passwordCredentialAlias, secret-value=StrongPassword)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 PasswordCredential가 credential-store 에 추가되었는지 확인합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:read-aliases()
    {
        "outcome" => "success",
        "result" => ["passwordcredentialalias"]
    }
    Copy to Clipboard Toggle word wrap

1.4.5. 인증 정보 저장소에서 SecretKeyCredential 생성

인증 정보 저장소 에서 SecretKeyCredential를 생성합니다. 기본적으로 Elytron은 256비트 키를 만듭니다. 다른 크기를 원하는 경우 key-size 특성에 128비트 또는 192-bit 키를 지정할 수 있습니다.

사전 요구 사항

프로세스

  • 다음 관리 CLI 명령을 사용하여 인증 정보 저장소에 SecretKeyCredential를 생성합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:generate-secret-key(alias=<alias>, key-size=<128_or_192>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:generate-secret-key(alias=secretKeyCredentialAlias)
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 Elytron이 SecretKeyCredential를 credential-store 에 저장했는지 확인합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:read-aliases()
    {
        "outcome" => "success",
        "result" => [
            "secretkeycredentialalias"
        ]
    }
    Copy to Clipboard Toggle word wrap

1.4.6. secret-key-credential-store에서 SecretKeyCredential 생성

secret-key-credential-store 에서 SecretKeyCredential를 생성합니다. 기본적으로 Elytron은 256비트 키를 만듭니다. 다른 크기를 원하는 경우 key-size 특성에 128비트 또는 192-bit 키를 지정할 수 있습니다.

SecretKeyCredential를 생성할 때 Elytron은 새로운 임의의 시크릿 키를 생성하여 SecretKeyCredential로 저장합니다. secret-key-credential-store 에서 내보내기 작업을 사용하여 인증 정보의 콘텐츠를 볼 수 있습니다.

중요

JBoss EAP에서 손실된 Elytron 인증 정보를 암호 해독하거나 검색할 수 없으므로 secret-key-credential-store, SecretKeyCredential 또는 둘 다의 백업을 생성해야 합니다.

secret-key-credential-store 에서 내보내기 작업을 사용하여 SecretKeyCredential의 값을 가져올 수 있습니다. 그런 다음 이 값을 백업으로 저장할 수 있습니다.

사전 요구 사항

프로세스

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

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_the_properties_credential_store>:generate-secret-key(alias=<alias>, key-size=<128_or_192>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:generate-secret-key(alias=secretKeyCredentialAlias)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 Elytron이 SecretKeyCredential를 생성했는지 확인합니다.

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_the_properties_credential_store>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:read-aliases()
    {
        "outcome" => "success",
        "result" => [
            "secretkeycredentialalias",
            "key"
        ]
    }
    Copy to Clipboard Toggle word wrap

1.4.7. secret-key-credential-store로 SecretKeyCredential 가져오기

secret-key-credential-store 외부에서 생성된 SecretKeyCredential를 Elytron secret-key-credential-store 로 가져올 수 있습니다. 다른 인증 정보 저장소에서 SecretKeyCredential를 내보냈다고 가정하겠습니다. 예를 들어 이 자격 증명 모음을 secret-key- credential-store 로 가져올 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 명령을 사용하여 관리 CLI에서 명령 캐싱을 비활성화합니다.

    중요

    캐싱을 비활성화하지 않으면 관리 CLI 기록 파일에 액세스할 수 있는 모든 사용자에게 시크릿 키가 표시됩니다.

    history --disable
    Copy to Clipboard Toggle word wrap
  2. 다음 관리 CLI 명령을 사용하여 시크릿 키를 가져옵니다.

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:import-secret-key(alias=<alias>, key="<secret_key>")
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:import-secret-key(alias=imported, key="RUxZAUs+Y1CzEPw0g2AHHOZ+oTKhT9osSabWQtoxR+O+42o11g==")
    Copy to Clipboard Toggle word wrap

  3. 다음 관리 CLI 명령을 사용하여 명령 캐싱을 다시 활성화합니다.

    history --enable
    Copy to Clipboard Toggle word wrap

1.4.8. 인증 정보 저장소에 인증 정보나열

인증 정보 저장소에 저장된 모든 인증 정보를 보려면 관리 CLI를 사용하여 나열할 수 있습니다.

프로세스

  • 다음 관리 CLI 명령을 사용하여 인증 정보 저장소에 저장된 인증 정보를 나열합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    {
        "outcome" => "success",
        "result" => [
            "passwordcredentialalias",
            "secretkeycredentialalias"
        ]
    }
    Copy to Clipboard Toggle word wrap

1.4.9. 인증 정보 저장소에서 SecretKeyCredential 내보내기

인증 정보 저장소 에서 기존 SecretKeyCredential를 내보내 SecretKeyCredential를 사용하거나 SecretKeyCredential의 백업을 생성할 수 있습니다.

사전 요구 사항

  • 인증 정보 저장소 에서 SecretKeyCredential를 생성했습니다.

    인증 정보 저장소에서 SecretKeyCredential를 생성하는 방법에 대한 자세한 내용은 인증 정보 저장소SecretKeyCredential 생성을 참조하십시오.

프로세스

  • 다음 관리 CLI 명령을 사용하여 credential-store 에서 SecretKeyCredential를 내보냅니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:export-secret-key(alias=<alias>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:export-secret-key(alias=secretKeyCredentialAlias)
    {
        "outcome" => "success",
        "result" => {"key" => "RUxZAUui+8JkoDCE6mFyA3cCIbSAZaXq5wgYejj1scYgdDqWiw=="}
    }
    Copy to Clipboard Toggle word wrap

1.4.10. secret-key-credential-store에서 SecretKeyCredential 내보내기

secret-key-credential-store 에서 기존 SecretKeyCredential를 내보내 SecretKeyCredential를 사용하거나 SecretKeyCredential의 백업을 생성할 수 있습니다.

사전 요구 사항

프로세스

  • 다음 관리 CLI 명령을 사용하여 secret-key-credential-store 에서 SecretKeyCredential를 내보냅니다.

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:export-secret-key(alias=<alias>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:export-secret-key(alias=secretkeycredentialalias)
    {
        "outcome" => "success",
        "result" => {"key" => "RUxZAUtxXcYvz0aukZu+odOynIr0ByLhC72iwzlJsi+ZPmONgA=="}
    }
    Copy to Clipboard Toggle word wrap

1.4.11. 인증 정보 저장소에서 인증 정보제거

자격 증명 저장소에 모든 인증 정보 유형을 저장할 수 있지만 기본적으로 인증 정보를 제거할 때 Elytron은 PasswordCredential이라고 가정합니다. 다른 인증 정보 유형을 제거하려면 entry-type 속성에 지정합니다.

프로세스

  • 다음 관리 CLI 명령을 사용하여 인증 정보 저장소 에서 인증 정보를 제거합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:remove-alias(alias=<alias>, entry-type=<credential_type>)
    Copy to Clipboard Toggle word wrap

    암호 인증 정보 제거 예

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:remove-alias(alias=passwordCredentialAlias)
    {
        "outcome" => "success",
        "response-headers" => {"warnings" => [{
            "warning" => "Update dependent resources as alias 'passwordCredentialAlias' does not exist anymore",
            "level" => "WARNING",
            "operation" => {
                "address" => [
                    ("subsystem" => "elytron"),
                    ("credential-store" => "exampleKeyStoreCredentialStore")
                ],
                "operation" => "remove-alias"
            }
        }]}
    }
    Copy to Clipboard Toggle word wrap

    SecretKeyCredential 제거 예

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:remove-alias(alias=secretKeyCredentialAlias, entry-type=SecretKeyCredential)
    {
        "outcome" => "success",
        "response-headers" => {"warnings" => [{
            "warning" => "Update dependent resources as alias 'secretKeyCredentialAl
    ias' does not exist anymore",
            "level" => "WARNING",
            "operation" => {
                "address" => [
                    ("subsystem" => "elytron"),
                    ("credential-store" => "exampleKeyStoreCredentialStore")
                ],
                "operation" => "remove-alias"
            }
        }]}
    }
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 Elytron이 인증 정보를 제거했는지 확인합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleKeyStoreCredentialStore:read-aliases()
    {
        "outcome" => "success",
        "result" => []
    }
    Copy to Clipboard Toggle word wrap

    삭제한 인증 정보가 나열되지 않습니다.

1.4.12. secret-key-credential-store에서 인증 정보 제거

SecretKeyCredential 유형만 secret-key-credential-store 에 저장할 수 있습니다. 즉, secret-key-credential-store 에서 인증 정보를 제거하면 항목 유형을 지정할 필요가 없습니다.

프로세스

  • 다음 명령을 사용하여 secret-key-credential-store 에서 SecretKeyCredential를 제거합니다.

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:remove-alias(alias=<alias>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:remove-alias(alias=secretKeyCredentialAlias)
    {
        "outcome" => "success",
        "response-headers" => {"warnings" => [{
            "warning" => "Update dependent resources as alias 'secretKeyCredentialAlias' does not exist anymore",
            "level" => "WARNING",
            "operation" => {
                "address" => [
                    ("subsystem" => "elytron"),
                    ("secret-key-credential-store" => "examplePropertiesCredentialSt
    ore")
                ],
                "operation" => "remove-alias"
            }
        }]}
    }
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 Elytron이 인증 정보를 제거했는지 확인합니다.

    구문

    /subsystem=elytron/secret-key-credential-store=<name_of_credential_store>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/secret-key-credential-store=examplePropertiesCredentialStore:read-aliases()
    {
        "outcome" => "success",
        "result" => []
    }
    Copy to Clipboard Toggle word wrap

    삭제한 인증 정보가 나열되지 않습니다.

1.5. WildFly Elytron 툴을 사용한 인증 정보 저장소 작업

WildFly Elytron 툴을 사용하여 인증 정보 저장소에서 오프라인에서 다양한 작업을 수행할 수 있습니다.

1.5.1. WildFly Elytron 툴을 사용하여 인증 정보 저장소 생성

Elytron에서는 모든 인증 정보 유형을 저장할 수 있는 인증 정보 저장소를 오프라인으로 생성할 수 있습니다.

프로세스

  • 다음 명령과 함께 WildFly Elytron 툴을 사용하여 인증 정보 저장소를 생성합니다.

    구문

    $ EAP_HOME/bin/elytron-tool.sh credential-store --create --location "<path_to_store_file>" --password <store_password>
    Copy to Clipboard Toggle word wrap

    예제

    $ EAP_HOME/bin/elytron-tool.sh credential-store --create --location "../cred_stores/example-credential-store.jceks" --password storePassword
    Credential Store has been successfully created
    Copy to Clipboard Toggle word wrap

    명령에 저장소 암호를 포함하지 않으려면 인수를 생략한 다음 프롬프트에 암호를 수동으로 입력합니다. WildFly Elytron 툴에서 생성된 마스크된 암호를 사용할 수도 있습니다. 마스크된 암호를 생성하는 방법에 대한 자세한 내용은 WildFly Elytron 도구를 사용하여 마스킹된 암호화된 문자열 생성을 참조하십시오.

1.5.2. Bouncy Castle 공급자를 사용하여 인증 정보 저장소 생성

Bouncy Castle 공급자를 사용하여 인증 정보 저장소를 생성합니다.

사전 요구 사항

  • Bouncy Castle을 사용하도록 환경이 구성되어 있는지 확인합니다.
참고

동일한 Elytron 기능을 구현하므로 credential-storesecret-key-credential-store 에 대해 동일한 이름을 가질 수 없습니다. org.wildfly.security.credential-store.

프로세스

  1. Bouncy Castle FIPS 키 저장소(BCFKS) 키 저장소를 정의합니다. FIPS는 연방 정보 처리 표준을 나타냅니다. 이미 가지고 있는 경우 다음 단계로 이동합니다.

    $ keytool -genkeypair -alias <key_pair_alias> -keyalg <key_algorithm> -keysize <key_size> -storepass <key_pair_and_keystore_password> -keystore <path_to_keystore> -storetype BCFKS -keypass <key_pair_and_keystore_password>
    Copy to Clipboard Toggle word wrap
    중요

    키 저장소 keypassstorepass 속성이 동일한지 확인합니다. 그렇지 않은 경우 elytron 하위 시스템의 BCFKS 키 저장소는 정의할 수 없습니다.

  2. credential-store 에 대한 시크릿 키를 생성합니다.

    $ keytool -genseckey -alias <key_alias> -keyalg <key_algorithm> -keysize <key_size> -keystore <path_to_keystore> -storetype BCFKS -storepass <key_and_keystore_password> -keypass <key_and_keystore_password>
    Copy to Clipboard Toggle word wrap
  3. 다음 명령과 함께 WildFly Elytron 툴을 사용하여 credential-store 를 정의합니다.

    $ EAP_HOME/bin/elytron-tool.sh credential-store -c -a <alias> -x <alias_password> -p <key_and_keystore_password> -l <path_to_keystore> -u "keyStoreType=BCFKS;external=true;keyAlias=<key_alias>;externalPath=<path_to_credential_store>"
    Copy to Clipboard Toggle word wrap

1.5.3. WildFly Elytron 툴을 사용하여 secret-key-credential-store 생성

Elytron에서는 SecretKeyCredential 인스턴스를 저장할 수 있는 secret-key-credential-store 를 오프라인으로 생성할 수 있습니다.

프로세스

  • 다음 명령과 함께 WildFly Elytron 툴을 사용하여 PropertiesCredentialStore를 생성합니다.

    구문

    $ EAP_HOME/bin/elytron-tool.sh credential-store --create --location "<path_to_store_file>" --type PropertiesCredentialStore
    Copy to Clipboard Toggle word wrap

    예제

    $ bin/elytron-tool.sh credential-store --create --location=standalone/configuration/properties-credential-store.cs --type PropertiesCredentialStore
    Credential Store has been successfully created
    Copy to Clipboard Toggle word wrap

1.5.4. WildFly Elytron 툴 인증 정보 저장소 작업

다음을 포함하여 WildFly Elytron 툴을 사용하여 다양한 인증 정보 저장소 작업을 수행할 수 있습니다.

암호 인증 정보 추가

다음 WildFly Elytron 툴 명령을 사용하여 인증 정보 저장소에 PasswordCredential를 추가할 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "<path_to_store_file>" --password <store_password> --add <alias> --secret <sensitive_string>
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/example-credential-store.jceks" --password storePassword --add examplePasswordCredential --secret speci@l_db_pa$$_01
Alias "examplePasswordCredential" has been successfully stored
Copy to Clipboard Toggle word wrap

시크릿을 명령에 배치하지 않으려면 인수를 생략한 다음 메시지가 표시되면 수동으로 보안을 입력합니다.

SecretKeyCredential 생성

다음 WildFly Elytron 툴 명령을 사용하여 인증 정보 저장소에 SecretKeyCredential를 추가할 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --generate-secret-key=example --location=<path_to_the_credential_store> --password <store_password>
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --generate-secret-key=example --location "../cred_stores/example-credential-store.jceks" --password storePassword
Alias "example" has been successfully stored
Copy to Clipboard Toggle word wrap

시크릿을 명령에 배치하지 않으려면 인수를 생략한 다음 메시지가 표시되면 수동으로 보안을 입력합니다.

기본적으로 JBoss EAP에 SecretKeyCredential를 생성할 때 256비트 시크릿 키를 생성합니다. 크기를 변경하려면 각각 128비트 또는 192-bit 키를 만들기 위해 --size=128 또는 --size=192 를 지정할 수 있습니다.

SecretKeyCredential 가져오기

다음 WildFLy Elytron 툴 명령을 사용하여 SecretKeyCredential를 가져올 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --import-secret-key=imported --location=<path_to_credential_store> --password=<store_password>
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --import-secret-key=imported --location=../cred_stores/example-credential-store.jceks --password=storePassword
Copy to Clipboard Toggle word wrap

가져올 시크릿 키를 입력합니다.

모든 인증 정보 나열

다음 WildFly Elytron 툴 명령을 사용하여 credentials -store의 인증 정보를 나열할 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "<path_to_store_file>" --password <store_password> --aliases
Copy to Clipboard Toggle word wrap

예제:

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/example-credential-store.jceks" --password storePassword --aliases
Credential store contains following aliases: examplepasswordcredential example
Copy to Clipboard Toggle word wrap

별칭이 있는지 확인

다음 명령을 사용하여 인증 정보 저장소에 별칭이 있는지 확인합니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "<path_to_store_file>" --password <store_password> --exists <alias>
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/example-credential-store.jceks" --password storePassword --exists examplepasswordcredential
Alias "examplepasswordcredential" exists
Copy to Clipboard Toggle word wrap

SecretKeyCredential 내보내기

다음 명령을 사용하여 인증 정보 저장소 에서 SecretKeyCredential를 내보낼 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --export-secret-key=<alias> --location=<path_to_credential_store> --password=storePassword
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --export-secret-key=example --location=../cred_stores/example-credential-store.jceks --password=storePassword
Exported SecretKey for alias example=RUxZAUtBiAnoLP1CA+i6DtcbkZHfybBJxPeS9mlVOmEYwjjmEA==
Copy to Clipboard Toggle word wrap

인증 정보 제거

다음 명령을 사용하여 인증 정보 저장소에서 인증 정보를 제거할 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "<path_to_store_file>" --password <store_password> --remove <alias>
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/example-credential-store.jceks" --password storePassword --remove examplepasswordcredential
Alias "examplepasswordcredential" has been successfully removed
Copy to Clipboard Toggle word wrap

1.5.5. Wildfly Elytron 툴 secret-key-credential-store 작업

WildFly Elytron 툴을 사용하여 SecretKeyCredential에 대해 다음 secret-key-credential-store 작업을 수행할 수 있습니다.

SecretKeyCredential 생성

다음 WildFly Elytron 툴 명령을 사용하여 secret-key-credential-store 에서 SecteKeyCredential 를 생성할 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --generate-secret-key=example --location "<path_to_the_credential_store>" --type PropertiesCredentialStore
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --generate-secret-key=example --location "standalone/configuration/properties-credential-store.cs" --type PropertiesCredentialStore
Alias "example" has been successfully stored
Copy to Clipboard Toggle word wrap

SecretKeyCredential 가져오기

다음 WildFLy Elytron 툴 명령을 사용하여 SecretKeyCredential를 가져올 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --import-secret-key=imported --location=<path_to_credential_store> --type PropertiesCredentialStore
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --import-secret-key=imported --location "standalone/configuration/properties-credential-store.cs" --type PropertiesCredentialStore
Copy to Clipboard Toggle word wrap

모든 인증 정보 나열

다음 WildFly Elytron 툴 명령을 사용하여 secret-key-credential-store 의 인증 정보를 나열할 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "<path_to_store_file>"  --aliases --type PropertiesCredentialStore
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store  --location "standalone/configuration/properties-credential-store.cs" --aliases --type PropertiesCredentialStore
Credential store contains following aliases: example
Copy to Clipboard Toggle word wrap

SecretKeyCredential 내보내기

다음 명령을 사용하여 secret-key-credential-store 에서 SecretKeyCredential를 내보낼 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --export-secret-key=<alias> --location "<path_to_credential_store>"  --type PropertiesCredentialStore
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --export-secret-key=example --location "standalone/configuration/properties-credential-store.cs" --type PropertiesCredentialStore
Exported SecretKey for alias example=RUxZAUt1EZM7PsYRgMGypkGirSel+5Eix4aSgwop6jfxGYUQaQ==
Copy to Clipboard Toggle word wrap

인증 정보 제거

다음 명령을 사용하여 인증 정보 저장소에서 인증 정보를 제거할 수 있습니다.

구문

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "<path_to_store_file>" --remove <alias> --type PropertiesCredentialStore
Copy to Clipboard Toggle word wrap

예제

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "standalone/configuration/properties-credential-store.cs"  --remove example --type PropertiesCredentialStore
Alias "example" has been successfully removed
Copy to Clipboard Toggle word wrap

WildFly Elytron 툴을 사용하여 인증 정보 저장소를 생성한 후 실행 중인 JBoss EAP 서버에 추가할 수 있습니다.

사전 요구 사항

프로세스

  • 다음 관리 CLI 명령을 사용하여 실행 중인 JBoss EAP 서버에 인증 정보 저장소를 추가합니다.

    구문

    /subsystem=elytron/credential-store=<store_name>:add(location="<path_to_store_file>",credential-reference={clear-text=<store_password>})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=my_store:add(location="../cred_stores/example-credential-store.jceks",credential-reference={clear-text=storePassword})
    Copy to Clipboard Toggle word wrap

JBoss EAP 구성에 인증 정보 저장소를 추가한 후 credentials -reference 특성을 사용하여 인증 정보 저장소에 저장된 암호 또는 민감한 문자열을 참조할 수 있습니다.

자세한 내용은 사용 가능한 옵션의 자세한 목록은 EAP_HOME/bin/elytron-tool.sh credential-store --help 명령을 사용하십시오.

1.5.7. WildFly Elytron 툴 키 쌍 관리 작업

다음 인수를 사용하여 elytron-tool.sh 를 작동하여 인증 정보 저장소의 별칭 아래에 저장할 수 있는 새 키 쌍 생성과 같은 인증 정보 저장소를 조작할 수 있습니다.

키 쌍 생성

generate-key-pair 명령을 사용하여 키 쌍을 만듭니다. 그런 다음 인증 정보 저장소의 별칭 아래에 키 쌍을 저장할 수 있습니다. 다음 예제에서는 인증 정보 저장소에 지정된 위치에 저장된 3072 비트의 할당된 크기가 있는 RSA 키 쌍 생성을 보여줍니다. 키 쌍에 지정된 별칭은 예입니다.

$ EAP_HOME/bin/elytron-tool.sh credential-store --location=<path_to_store_file> --generate-key-pair example --algorithm RSA --size 3072
Copy to Clipboard Toggle word wrap
키 쌍 가져오기

import-key-pair 명령을 사용하여 기존 SSH 키 쌍을 지정된 별칭이 있는 인증 정보 저장소로 가져옵니다. 다음 예제에서는 OpenSSH 형식의 개인 키가 포함된 /home/user/.ssh/id_rsa 파일에서 example 의 별칭이 있는 키 쌍을 가져옵니다.

$ EAP_HOME/bin/elytron-tool.sh credential-store --import-key-pair example --private-key-location /home/user/.ssh/id_rsa --location=<path_to_store_file>
Copy to Clipboard Toggle word wrap
키 쌍 내보내기

export-key-pair-public-key 명령을 사용하여 키 쌍의 공개 키를 표시합니다. 공개 키의 OpenSSH 형식에는 별칭이 지정됩니다. 다음 예제에서는 별칭 예제에 대한 공개 키를 표시합니다.

$ EAP_HOME/bin/elytron-tool.sh credential-store --location=<path_to_store_file> --export-key-pair-public-key example

Credential store password:
Confirm credential store password:
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMfncZuHmR7uglb0M96ieArRFtp42xPn9+ugukbY8dyjOXoi
cZrYRyy9+X68fylEWBMzyg+nhjWkxJlJ2M2LAGY=
Copy to Clipboard Toggle word wrap
참고

export-key-pair-public-key 명령을 실행한 후 인증 정보 저장소 암호를 입력하라는 메시지가 표시됩니다. 암호가 없는 경우 프롬프트를 비워 둡니다.

1.5.8. Elytron 구성 파일에서 저장된 키 쌍 사용 예

키 쌍은 두 개의 개별 키이지만 일치하는 암호화 키(공개 키와 개인 키)로 구성됩니다. 키 쌍을 elytron 구성 파일에서 참조하려면 인증 정보 저장소에 키 쌍을 저장해야 합니다. 그런 다음 Git에 독립 실행형 서버 구성 데이터를 관리할 수 있는 액세스 권한을 제공할 수 있습니다.

다음 예제에서는 인증 정보 저장소와 해당 속성을 elytron 구성 파일의 < credential-stores > 요소에서 참조합니다. & lt;credential > 요소는 인증 정보 저장소와 키 쌍을 저장하는 별칭을 참조합니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <authentication-client xmlns="urn:elytron:client:1.6">

     <credential-stores>
        <credential-store name="${credential_store_name}">
           <protection-parameter-credentials>
              <clear-password password="${credential_store_password}"/>
           </protection-parameter-credentials>
           <attributes>
              <attribute name="path" value="${path_to_credential_store}"/>
           </attributes>
        </credential-store>
     </credential-stores>

     <authentication-rules>
        <rule use-configuration="${configuration_file_name}"/>
     </authentication-rules>

     <authentication-configurations>
        <configuration name="${configuration_file_name}">
           <credentials>
              <credential-store-reference store="${credential_store_name}" alias="${alias_of_key_pair}"/>
           </credentials>
        </configuration>
     </authentication-configurations>

  </authentication-client>
</configuration>
Copy to Clipboard Toggle word wrap

elytron 구성 파일을 구성한 후 SSH 인증에 키 쌍을 사용할 수 있습니다.

1.5.9. WildFly Elytron 툴을 사용하여 마스크된 암호화된 문자열 생성

WildFly Elytron 툴을 사용하여 인증 정보 저장소의 일반 텍스트 암호 대신 사용할 암호화된 문자열을 생성할 수 있습니다.

프로세스

  • 마스크된 문자열을 생성하려면 다음 명령을 사용하고 salt 및 반복 횟수에 대한 값을 제공합니다.

    $ EAP_HOME/bin/elytron-tool.sh mask --salt <salt> --iteration <iteration_count> --secret <password>
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    $ EAP_HOME/bin/elytron-tool.sh mask --salt 12345678 --iteration 123 --secret supersecretstorepassword
    
    MASK-8VzWsSNwBaR676g8ujiIDdFKwSjOBHCHgnKf17nun3v;12345678;123
    Copy to Clipboard Toggle word wrap

    명령에 보안을 제공하지 않으려면 해당 인수를 생략하면 표준 입력을 사용하여 수동으로 시크릿을 입력하라는 메시지가 표시됩니다.

자세한 내용은 사용 가능한 옵션의 자세한 목록은 EAP_HOME/bin/elytron-tool.sh mask --help 명령을 사용하십시오.

1.6. 인증 정보 저장소에서 인증 정보 자동 업데이트

인증 정보 저장소가 있는 경우 인증 정보 참조에서 참조하기 전에 인증 정보를 추가하거나 기존 인증 정보를 업데이트할 필요가 없습니다. Elytron은 이 프로세스를 자동화합니다. 인증 정보 참조를 구성할 때 storeclear-text 특성을 둘 다 지정합니다. Elytron은 store 속성으로 지정된 인증 정보 저장소에 인증 정보를 자동으로 추가하거나 업데이트합니다. 필요한 경우 alias 속성을 지정할 수 있습니다.

Elytron은 다음과 같이 인증 정보 저장소를 업데이트합니다.

  • 별칭을 지정하는 경우:

    • 별칭에 대한 항목이 있는 경우 기존 인증 정보가 지정된 일반 텍스트 암호로 교체됩니다.
    • 별칭에 대한 항목이 없으면 지정된 별칭 및 일반 텍스트 암호를 사용하여 새 항목이 자격 증명 저장소에 추가됩니다.
  • 별칭을 지정하지 않으면 Elytron은 별칭을 생성하고 생성된 별칭 및 지정된 일반 텍스트 암호를 사용하여 인증 정보 저장소에 새 항목을 추가합니다.

일반 텍스트 속성은 인증 정보 저장소가 업데이트될 때 관리 모델에서 제거됩니다.

다음 예제에서는 저장소, 일반텍스트별칭 속성을 지정하는 인증 정보 참조를 생성하는 방법을 보여줍니다.

/subsystem=elytron/key-store=exampleKS:add(relative-to=jboss.server.config.dir, path=example.keystore, type=JCEKS, credential-reference={store=exampleKeyStoreCredentialStore, alias=myNewAlias, clear-text=myNewPassword})
{
    "outcome" => "success",
    "result" => {"credential-store-update" => {
        "status" => "new-entry-added",
        "new-alias" => "myNewAlias"
    }}
}
Copy to Clipboard Toggle word wrap

다음 명령을 사용하여 이전에 정의한 인증 정보 저장소에 추가된 myNewAlias 항목의 인증 정보를 업데이트할 수 있습니다.

/subsystem=elytron/key-store=exampleKS:write-attribute(name=credential-reference.clear-text,value=myUpdatedPassword)
{
    "outcome" => "success",
    "result" => {"credential-store-update" => {"status" => "existing-entry-updated"}},
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}
Copy to Clipboard Toggle word wrap
참고

credentials -reference 매개변수가 포함된 작업이 실패하면 자동 인증 정보 저장소 업데이트가 수행되지 않습니다.

credentials -reference 속성에서 지정한 인증 정보 저장소는 변경되지 않습니다.

1.7. Elytron 클라이언트가 있는 인증 정보 저장소 사용 예

Jakarta Enterprise Cryostats와 같은 JBoss EAP에 연결하는 클라이언트는 Elytron Client를 사용하여 인증할 수 있습니다. 실행 중인 JBoss EAP 서버에 액세스할 수 없는 사용자는 WildFly Elytron 툴을 사용하여 인증 정보 저장소를 생성 및 수정할 수 있으며 클라이언트는 Elytron Client를 사용하여 인증 정보 저장소 내의 중요한 문자열에 액세스할 수 있습니다.

다음 예제에서는 Elytron Client 구성 파일에서 자격 증명 저장소를 사용하는 방법을 보여줍니다.

인증 정보 저장소가 있는 custom-config.xml

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.7">
    ...
    <credential-stores>
      <credential-store name="my_store"> 
1

        <protection-parameter-credentials>
          <credential-store-reference clear-text="pass123"/> 
2

        </protection-parameter-credentials>
        <attributes>
          <attribute name="location" value="/path/to/my_store.jceks"/> 
3

        </attributes>
      </credential-store>
    </credential-stores>
    ...
    <authentication-configurations>
      <configuration name="my_user">
        <set-host name="localhost"/>
        <set-user-name name="my_user"/>
        <set-mechanism-realm name="ManagementRealm"/>
        <use-provider-sasl-factory/>
        <credentials>
          <credential-store-reference store="my_store" alias="my_user"/> 
4

        </credentials>
      </configuration>
    </authentication-configurations>
    ...
  </authentication-client>
</configuration>
Copy to Clipboard Toggle word wrap

1
Elytron Client 구성 파일 내에서 사용할 인증 정보 저장소의 이름입니다.
2
인증 정보 저장소의 암호입니다.
3
인증 정보 저장소 파일의 경로입니다.
4
인증 정보 저장소에 저장된 민감한 문자열에 대한 인증 정보 참조입니다.

1.8. FIPS 140-2 호환 인증 정보 저장소 생성

FIPS(Federal Information Processing Standard) 140-2 호환 인증 정보 저장소를 Elytron에서 구성할 수 있습니다. FIPS 140-2는 미국에서 개발한 컴퓨터 보안 표준입니다. 정부 업계 실무 그룹이 암호화 모듈의 품질을 검증합니다. FIPS 발행물( 140-2 포함)은 URL: http://csrc.nist.gov/publications/PubsFIPS.html 에서 확인할 수 있습니다.

두 개의 다른 공급자를 사용하여 Elytron에서 FIPS 140-2 호환 인증 정보 저장소를 구성할 수 있습니다.

중요

JBoss EAP 자체는 FIPS 인증을 받지 않습니다. JBoss EAP의 FIPS 지원 수준은 JBoss EAP를 FIPS 인증 암호화 구현과 함께 사용할 수 있다는 것입니다. 테스트된 구현은 BouncyCastle 및 SunPKCS#11입니다.

NSS는 플랫폼 간 보안 지원 클라이언트 및 서버 애플리케이션을 지원하는 라이브러리 집합입니다. SunPKCS#11 공급자를 JBoss EAP의 NSS 라이브러리와 함께 사용하여 FIPS 140-2 호환 암호화를 구현할 수 있습니다. NSS에 대한 자세한 내용은 Mozilla docs - NSS(Network Security Services) 를 참조하십시오. SunPKCS#11 공급자에 대한 자세한 내용은 PKCS#11 참조 가이드를 참조하십시오.

모든 JDK(Java Development Kit) 공급업체가 FIPS(Federal Information Processing Standard) 140-2 준수에 필요한 NSS 라이브러리에서 구현한 NSS(Network Security Services) 소프트웨어 토큰을 사용하여 SunPKCS#11 보안 공급자 구성을 지원하는 것은 아닙니다. JBoss EAP에서 SunPKCS#11 공급자 및 NSS 데이터베이스를 사용하여 FIPS를 구성하기 전에 JDK에서 지원하는지 확인합니다.

다음은 SunPKCS#11 보안 구성을 지원하는 JBoss EAP에 대해 지원되는 JDK 목록입니다.

  • OpenJDK 11
  • OpenJDK 17

Red Hat Enterprise Linux 8.4부터 FIPS(Federal Information Processing Standard) 시스템 전체 암호화 정책을 활성화하면 Java의 FIPS도 자동으로 활성화됩니다. 기본 NSS(Network Security Services) 데이터베이스를 사용하여 FIPS 140-2 호환 인증 정보 저장소를 생성할 수 있습니다.

이 절차에서 $JAVA_HOME 은 JDK 설치 경로를 나타냅니다. 이 절차의 명령을 root 사용자로 실행합니다.

사전 요구 사항

  • RHEL에서 FIPS가 활성화되어 있습니다.

    다음 명령을 사용하여 FIPS가 활성화되어 있는지 확인할 수 있습니다.

    # fips-mode-setup --check
    Copy to Clipboard Toggle word wrap

    RHEL에서 FIPS 활성화에 대한 자세한 내용은 다음 리소스를 참조하십시오.

  • NSS 도구가 설치되어 있습니다.

    Red Hat Enterprise Linux에서는 다음과 같이 DNF 패키지 관리자를 사용하여 NSS 툴을 설치할 수 있습니다.

    # dnf install -y nss-tools
    Copy to Clipboard Toggle word wrap
  • JDK(Java Development Kit)는 NSS 라이브러리를 사용하여 PKCS#11의 구성을 지원합니다.

    FIPS를 지원하는 JDK에 대한 자세한 내용은 FIPS를 지원하는 JDK 를 참조하십시오.

  • JBoss EAP가 실행 중입니다.

프로세스

  1. $JAVA_HOME/conf/security/nss.fips.cfg 파일에서 nssDbMode 값을 readWrite 로 업데이트합니다.

    nss.fips.cfg 콘텐츠 예

    name = NSS-FIPS
    nssLibraryDirectory = /usr/lib64
    nssSecmodDirectory = sql:/etc/pki/nssdb
    nssDbMode = readWrite
    nssModule = fips
    
    attributes(*,CKO_SECRET_KEY,CKK_GENERIC_SECRET)={ CKA_SIGN=true }
    Copy to Clipboard Toggle word wrap

  2. 인증 정보 저장소를 암호화하는 AES 시크릿 키를 생성합니다.

    참고

    명령에 store password NONE 을 사용해야 합니다.

    구문

    # keytool -genseckey -keystore NONE -storetype PKCS11 -storepass NONE -alias <key_alias> -keyalg <symmetric_key_algorithm> -keysize <key_size>
    Copy to Clipboard Toggle word wrap

    예제

    # keytool -genseckey -keystore NONE -storetype PKCS11 -storepass NONE -alias exampleKeyAlias -keyalg AES -keysize 256
    Copy to Clipboard Toggle word wrap

  3. 시크릿 키를 읽을 수 있는지 확인합니다.

    # keytool -list -storetype pkcs11 -storepass NONE
    
    Keystore type: PKCS11
    Keystore provider: SunPKCS11-NSS-FIPS
    
    Your keystore contains 1 entry
    
    exampleKeyAlias, SecretKeyEntry,
    Copy to Clipboard Toggle word wrap
  4. $JAVA_HOME/conf/security/nss.fips.cfg 파일에서 nssDbMode 값을 readOnly 로 업데이트합니다.

    nss.fips.cfg 콘텐츠 예

    name = NSS-FIPS
    nssLibraryDirectory = /usr/lib64
    nssSecmodDirectory = sql:/etc/pki/nssdb
    nssDbMode = readOnly
    nssModule = fips
    
    attributes(*,CKO_SECRET_KEY,CKK_GENERIC_SECRET)={ CKA_SIGN=true }
    Copy to Clipboard Toggle word wrap

  5. 관리 CLI의 공급자 목록에 SunJCE 공급자를 추가합니다.

    1. SunJCE용 공급자 로더를 추가합니다.

      /subsystem=elytron/provider-loader=SunJCE:add(class-names=[com.sun.crypto.provider.SunJCE])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap
    2. 집계 공급자에서 Elytron 및 SunJCE를 구성합니다.

      구문

      /subsystem=elytron/aggregate-providers=<aggregate_provider_name>:add(providers=[elytron,SunJCE])
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/aggregate-providers=exampleAggregateProvider:add(providers=[elytron,SunJCE])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

      참고

      공급자는 명령에 정의된 순서대로 호출됩니다.

  6. SunJCE 공급자를 사용하여 Elytron에 인증 정보 저장소를 생성합니다.

    구문

    /subsystem=elytron/credential-store=<credential_store_name>:add(implementation-properties={keyStoreType => PKCS11, external => true, keyAlias => <key_alias>, externalPath => <path_where_credential_store_is_to_be_saved>}, modifiable=true, credential-reference={clear-text=<password>}, create=true, other-providers=<aggregate_provider_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleFipsCredentialStore:add(implementation-properties={keyStoreType => PKCS11, external => true, keyAlias => exampleKeyAlias, externalPath => /home/ashwin/example.store}, modifiable=true, credential-reference={clear-text=secret}, create=true, other-providers=exampleAggregateProvider)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

검증

  1. 인증 정보 저장소에 별칭을 추가합니다.

    구문

    /subsystem=elytron/credential-store=<credential_store_name>:add-alias(alias=<alias>, secret-value=<secret_value>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleFipsCredentialStore:add-alias(alias=exampleAlias, secret-value=secret)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 인증 정보 저장소의 별칭을 나열합니다.

    구문

    /subsystem=elytron/credential-store=<credential_store_name>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleFipsCredentialStore:read-aliases()
    {
        "outcome" => "success",
        "result" => ["examplealias"]
    }
    Copy to Clipboard Toggle word wrap

생성된 인증 정보 저장소는 FIPS 140-2와 호환됩니다.

BouncyCastle은 Java 및 C#을 위한 경량 암호화 API를 제공합니다. 다음 BouncyCastle 공급자를 JBoss EAP와 함께 사용하여 FIPS 140-2 호환 인증 정보 저장소를 생성할 수 있습니다.

  • BouncyCastle FIPS 공급자의 JCE(Java Cryptography Extension) 및 JCA(Java Cryptography Architecture)의 공급자입니다.
  • BouncyCastle FIPS 공급자 for the Java Secure Socket Extension (JSSE)

BouncyCastle에 대한 자세한 내용은 Bouncy Castle 의 Legion of the Buncy Castle 을 참조하십시오.

Red Hat Enterprise Linux 8.4부터 FIPS(Federal Information Processing Standard) 시스템 전체 암호화 정책을 활성화하면 OpenJDK에서 다양한 보안 공급자를 자동으로 활성화합니다. 보안 공급자 중 하나는 FIPS 모드에서 구성된 SunPKCS11 공급자입니다. 대신 BouncyCastle 공급자를 사용하여 아래 단계에 따라 FIPS(Federal Information Processing Standard) 140-2 호환 인증 정보를 생성할 수 있습니다.

사전 요구 사항

  • RHEL에서 FIPS가 활성화되어 있습니다.

    다음 명령을 사용하여 FIPS가 활성화되어 있는지 확인할 수 있습니다.

    # fips-mode-setup --check
    Copy to Clipboard Toggle word wrap

    RHEL에서 FIPS 활성화에 대한 자세한 내용은 다음 리소스를 참조하십시오.

  • JDK(Java Development Kit)는 BouncyCastle 공급자를 사용하여 FIPS 설정을 지원합니다.

    자세한 내용은 Bouncy Castle - FIPS 리소스 페이지 Legion에 대한 Java 관련 질문을 참조하십시오.

프로세스

  1. 다음 링크에서 BouncyCASTs를 다운로드합니다.

  2. 다음 콘텐츠를 사용하여 java.security 라는 구성 파일을 생성합니다.

    fips.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider
    fips.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:BCFIPS
    fips.provider.3=SUN
    fips.provider.4=SunEC
    fips.provider.5=com.sun.net.ssl.internal.ssl.Provider
    Copy to Clipboard Toggle word wrap
    참고

    기본 java.security 파일에서 FIPS 공급자를 수정하지 마십시오. 이 절차에 설명된 대로 자체 java.security 속성 파일을 사용하는 것이 좋습니다.

  3. 인증 정보 저장소를 암호화하는 AES 시크릿 키를 생성합니다.

    구문

    $ keytool -J-Djava.security.properties=<java_security_file> -genseckey -keystore "<keystore_name>" -storetype BCFKS -storepass <store_password> -alias <key_alias> -keyalg <symmetric_key_algorithm> -keysize <key_size> -keypass <key_password>  -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath <path_to_bc-fips_jar>  -dname "<certificate_contents>" -validity <validity_in_days>
    Copy to Clipboard Toggle word wrap

    예제

    $ keytool -J-Djava.security.properties=<path_to_java_security_file>/java.security -genseckey -keystore "examplekeystore.bcfks" -storetype BCFKS -storepass password -alias exampleKeyAlias -keyalg AES -keysize 256 -keypass password -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath <path_to_bc-fips_jar>/bc-fips-1.0.2.jar -dname "CN=localhost" -validity 365
    Copy to Clipboard Toggle word wrap

  4. 시크릿 키를 읽을 수 있는지 확인합니다.

    구문

    $ keytool -J-Djava.security.properties=<java_security_file> -list -keystore <keystore_name> -storetype BCFKS -storepass <store_password> -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath <path_to_bc-fips_jar>
    Copy to Clipboard Toggle word wrap

    예제

    $ keytool -J-Djava.security.properties=<path_to_java_security_file>/java.security -list -keystore examplekeystore.bcfks -storetype BCFKS -storepass password -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath <path_to_bc-fips_jar>/bc-fips-1.0.2.jar
    Copy to Clipboard Toggle word wrap

    출력 예

    Keystore type: BCFKS
    Keystore provider: BCFIPS
    
    Your keystore contains 1 entry
    
    exampleKeyAlias, Mar 1, 2023, SecretKeyEntry,
    Copy to Clipboard Toggle word wrap

  5. 서버를 시작합니다.
  6. 관리 CLI를 사용하여 BouncyCastle 공급자를 사용하도록 JBoss EAP 구성.

    1. SunJCE 공급자를 공급자 목록에 추가합니다.

      /subsystem=elytron/provider-loader=SunJCE:add(class-names=[com.sun.crypto.provider.SunJCE])
      Copy to Clipboard Toggle word wrap
    2. BouncyCastle 공급자를 JBoss EAP에서 모듈로 추가합니다.

      구문

      module add --name=org.bouncycastle.fips --resources=<path_to_bc-fips_jar>:<path_to_bctls-fips_jar>
      Copy to Clipboard Toggle word wrap

      예제

      module add --name=org.bouncycastle.fips --resources=<path_to_bc-fips_jar>/bc-fips-1.0.2.jar:<path_to_bctls-fips_jar>/bctls-fips-1.0.2.jar
      Copy to Clipboard Toggle word wrap

    3. BouncyCastle 공급자의 공급자 로더를 추가합니다.

      구문

      /subsystem=elytron/provider-loader=<provider_loader_name>:add(module=org.bouncycastle.fips)
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/provider-loader=exampleProviderLoader:add(module=org.bouncycastle.fips)
      Copy to Clipboard Toggle word wrap

    4. 집계 공급자에서 BouncyCastle, SunJCE 및 결합된 공급자를 구성합니다.

      구문

      /subsystem=elytron/aggregate-providers=<aggregate_provider_name>:add(providers=[<provider_loader_name>,SunJCE,combined-providers])
      Copy to Clipboard Toggle word wrap

      예제

      /subsystem=elytron/aggregate-providers=exampleAggregateProvider:add(providers=[exampleProviderLoader,SunJCE,combined-providers])
      Copy to Clipboard Toggle word wrap

      참고

      공급자는 명령에 정의된 순서대로 호출됩니다.

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

      reload
      Copy to Clipboard Toggle word wrap
  7. BouncyCastle 공급자를 사용하여 Elytron에서 인증 정보 저장소를 생성합니다.

    구문

    /subsystem=elytron/credential-store=<credential_store_name>:add(credential-reference={clear-text=<key_and_keystore_password>},implementation-properties={keyAlias=<key_alias>,external=true,externalPath=<path_to_BCFKS_credential_store>,keyStoreType=BCFKS},create=true,path=<path_to_keystore>,modifiable=true, other-providers=<aggregate_provider_name>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleFipsCredentialStore:add(credential-reference={clear-text=password},implementation-properties={keyAlias=exampleKeyAlias,external=true, externalPath=credentialStore.bcfks, keyStoreType=BCFKS}, create=true, path=__<path_to_keystore>__/examplekeystore.bcfks, modifiable=true, other-providers=exampleAggregateProvider)
    Copy to Clipboard Toggle word wrap

검증

  1. 인증 정보 저장소에 별칭을 추가합니다.

    구문

    /subsystem=elytron/credential-store=<credential_store_name>:add-alias(alias=<alias>, secret-value=<secret_value>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleFipsCredentialStore:add-alias(alias=exampleAlias, secret-value=secret)
    Copy to Clipboard Toggle word wrap

  2. 인증 정보 저장소의 별칭을 나열합니다.

    구문

    /subsystem=elytron/credential-store=<credential_store_name>:read-aliases()
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=exampleFipsCredentialStore:read-aliases()
    {
        "outcome" => "success",
        "result" => ["examplealias"]
    }
    Copy to Clipboard Toggle word wrap

생성된 인증 정보 저장소는 FIPS 140-2와 호환됩니다.

2장. JBoss EAP에 초기 키를 제공하여 보안 리소스의 잠금을 해제

2.1. Elytron의 암호화된 표현식

중요한 문자열의 보안을 유지하기 위해 서버 구성 파일에서 중요한 문자열 대신 암호화된 표현식을 사용할 수 있습니다.

암호화된 표현식은 SecretKeyCredential로 문자열을 암호화한 다음 인코딩 접두사 및 확인자 이름과 결합한 것입니다. 인코딩 접두사는 표현식이 암호화된 표현식임을 Elytron에 알려줍니다. 확인자는 암호화된 표현식을 인증 정보 저장소의 해당 SecretKeyCredential에 매핑합니다.

Elytron의 expression=encryption 리소스는 암호화된 표현식을 사용하여 런타임에 암호화된 문자열을 디코딩합니다. 구성 파일에서 중요한 문자열 자체 대신 암호화된 표현식을 사용하면 문자열의 기밀성을 보호합니다. 암호화된 표현식은 다음 형식을 사용합니다.

특정 해결기를 사용하는 경우 구문

${ENC::RESOLVER_NAME:ENCRYPTED_STRING}
Copy to Clipboard Toggle word wrap

ENC 는 암호화된 표현식을 나타내는 접두사입니다.

RESOLVER_NAME 은 암호화된 문자열을 해독하는 데 사용하는 확인자 Elytron입니다.

예제

${ENC::initialresolver:RUxZAUMQE+L5zx9LmCRLyh5fjdfl1WM7lhfthKjeoEU+x+RMi6s=}
Copy to Clipboard Toggle word wrap

기본 확인자를 사용하여 암호화된 표현식을 생성하는 경우 다음과 같습니다.

기본 해결자를 사용하는 경우 구문

${ENC::ENCRYPTED_STRING}
Copy to Clipboard Toggle word wrap

예제

${ENC::RUxZAUMQE+L5zx9LmCRLyh5fjdfl1WM7lhfthKjeoEU+x+RMi6s=}
Copy to Clipboard Toggle word wrap

이 경우 Elytron은 expression=encryption 리소스에 정의한 기본 확인자를 사용하여 표현식의 암호를 해독합니다. 이를 지원하는 모든 리소스 특성에 암호화된 표현식을 사용할 수 있습니다. 특성이 암호화된 표현식을 지원하는지 확인하려면 read-resource-description 작업을 사용합니다. 예를 들면 다음과 같습니다.

mail/mail-session에 대한 read-resource-description 예

/subsystem=mail/mail-session=*/:read-resource-description(recursive=true,access-control=none)
{
  "outcome"=>"success",
  "result"=>[{
  ...
    "from"=>{
      ...
      "expression-allowed"=>true,
      ...
   }]
}
Copy to Clipboard Toggle word wrap

이 예제에서 속성은 암호화된 표현식을 지원합니다. 즉, from 필드에 있는 이메일 주소를 암호화한 다음 암호화된 표현식을 사용하여 숨길 수 있습니다.

2.2. Elytron에서 암호화된 표현식 만들기

민감한 문자열 및 SecretKeyCredential에서 암호화된 표현식을 생성합니다. 중요한 문자열의 보안 유지 관리를 위해 관리 모델의 중요한 문자열인 서버 구성 파일 대신 이 암호화된 표현식을 사용합니다.

사전 요구 사항

프로세스

  1. 다음 관리 CLI 명령을 사용하여 인증 정보 저장소에서 기존 SecretKeyCredential의 별칭을 참조하는 확인자를 생성합니다.

    구문

    /subsystem=elytron/expression=encryption:add(resolvers=[{name=<name_of_the_resolver>, credential-store=<name_of_credential_store>, secret-key=<secret_key_alias>}])
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/expression=encryption:add(resolvers=[{name=exampleResolver, credential-store=examplePropertiesCredentialStore, secret-key=key}])
    Copy to Clipboard Toggle word wrap

    중복 리소스에 대한 오류 메시지가 표시되면 다음과 같이 add 대신 list-add 작업을 사용합니다.

    구문

    /subsystem=elytron/expression=encryption:list-add(name=resolvers, value={name=<name_of_the_resolver>, credential-store=<name_of_credential_store>, secret-key=<secret_key_alias>})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/expression=encryption:list-add(name=resolvers,value={name=exampleResolver, credential-store=examplePropertiesCredentialStore, secret-key=key})
    {
        "outcome" => "success",
        "response-headers" => {
            "operation-requires-reload" => true,
            "process-state" => "reload-required"
        }
    }
    Copy to Clipboard Toggle word wrap

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

    reload
    Copy to Clipboard Toggle word wrap
  3. 관리 CLI에서 명령 캐싱을 비활성화합니다.

    중요

    캐싱을 비활성화하지 않으면 관리 CLI 기록 파일에 액세스할 수 있는 모든 사용자에게 시크릿 키가 표시됩니다.

    history --disable
    Copy to Clipboard Toggle word wrap
  4. 다음 관리 CLI 명령을 사용하여 암호화된 표현식을 생성합니다.

    구문

    /subsystem=elytron/expression=encryption:create-expression(resolver=<existing_resolver>, clear-text=<sensitive_string_to_protect>)
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/expression=encryption:create-expression(resolver=exampleResolver, clear-text=TestPassword)
    {
        "outcome" => "success",
        "result" => {"expression" => "${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=}"}
    }
    Copy to Clipboard Toggle word wrap

    ${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=} 는 관리 모델에서 TestPassword 대신 사용하는 암호화된 표현식입니다.

    다른 위치에서 동일한 일반 텍스트를 사용하는 경우 해당 위치의 일반 텍스트 대신 암호화된 표현식을 사용하기 전에 매번 이 명령을 반복합니다. 동일한 일반 텍스트에 대해 동일한 명령을 반복하면 Elytron은 각 호출에 대해 고유한 초기화 벡터를 사용하므로 동일한 키에 대해 다른 결과를 얻을 수 있습니다.

    다른 암호화된 표현식을 사용하면 문자열에서 암호화된 표현식이 손상되면 다른 암호화된 표현식에도 동일한 문자열이 포함될 수 있음을 확인할 수 없습니다.

  5. 다음 관리 CLI 명령을 사용하여 명령 캐싱을 다시 활성화합니다.

    history --enable
    Copy to Clipboard Toggle word wrap

2.3. 암호화된 표현식을 사용하여 KeyStoreCredentialStore/credential-store 보안

암호화된 표현식을 사용하여 KeyStoreCredentialStore를 보호할 수 있습니다.

사전 요구 사항

프로세스

  • 암호화된 표현식을 일반 텍스트로 사용하는 KeyStoreCredentialStore를 생성합니다.

    구문

    /subsystem=elytron/credential-store=<name_of_credential_store>:add(path=<path_to_the_credential_store>, create=true, modifiable=true, credential-reference={clear-text=<encrypted_expression>})
    Copy to Clipboard Toggle word wrap

    예제

    /subsystem=elytron/credential-store=secureKeyStoreCredentialStore:add(path="secureKeyStoreCredentialStore.jceks", relative-to=jboss.server.data.dir, create=true, modifiable=true, credential-reference={clear-text=${ENC::exampleResolver:RUxZAUMQgtpG7oFlHR2j1Gkn3GKIHff+HR8GcMX1QXHvx2uGurI=}})
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

암호화된 표현식으로 KeyStoreCredentialStore를 보호한 후 KeyStoreCredentialStore에 SecretKeyCredential Store를 생성하고 secret 키를 사용하여 다른 암호화된 표현식을 생성할 수 있습니다. 그런 다음 관리 모델(서버 구성 파일)에서 민감한 문자열 대신 새로 암호화된 이 표현식을 사용할 수 있습니다. 보안을 위해 전체 인증 정보 저장소 체인을 생성할 수 있습니다. 이러한 체인을 사용하면 문자열이 다음과 같이 보호되기 때문에 민감한 문자열을 추측하기가 더 어려워집니다.

  • 첫 번째 암호화된 표현식은 KeyStoreCredentialStore를 보호합니다.
  • 또 다른 암호화된 표현식은 민감한 문자열을 보호합니다.
  • 민감한 문자열을 디코딩하려면 암호화된 표현식을 모두 해독해야 합니다.

암호화된 표현식의 체인이 길어짐에 따라 민감한 문자열을 해독하기가 더 어려워집니다.

3장. reference

3.1. aggregate-providers 속성

공급자 특성을 설정하여 집계 공급자 구성할 수 있습니다.

Expand
표 3.1. aggregate-providers 속성
속성설명

공급자

집계할 공급자 목록입니다. Elytron은 목록에 있는 첫 번째 적합한 공급자를 사용합니다.

3.2. credentials-store 속성

속성을 설정하여 인증 정보 저장소를 구성할 수 있습니다.

Expand
표 3.2. credentials-store 속성
속성설명

create

인증 정보 저장소가 없는 경우 스토리지를 생성해야 하는지 여부를 지정합니다. 기본값은 false 입니다.

credential-reference

보호 매개변수를 생성하는 데 사용되는 인증 정보에 대한 참조입니다. 이는 일반 텍스트이거나 인증 정보 저장소에 저장된 인증 정보에 대한 참조일 수 있습니다.

implementation-properties

인증 정보 저장소 구현별 속성 맵입니다.

modifiable

인증 정보 저장소를 수정할 수 있는지 여부입니다. 기본값은 true입니다.

other-providers

인증 정보 저장소 내에서 필요한 Jakarta Connectors 오브젝트를 생성할 수 있는 공급자를 가져오는 공급자의 이름입니다. 이는 키 저장소 기반 인증 정보 저장소에만 유효합니다. 지정하지 않으면 대신 글로벌 공급자 목록이 사용됩니다.

path

인증 정보 저장소의 파일 이름입니다.

provider-name

CredentialStoreSpi 를 인스턴스화하는 데 사용할 공급자의 이름입니다. 공급자를 지정하지 않으면 지정된 유형의 인스턴스를 생성할 수 있는 첫 번째 공급자가 사용됩니다.

공급자

필요한 인증 정보 저장소 유형을 생성할 수 있는 공급자를 가져올 공급자의 이름입니다. 지정하지 않으면 대신 글로벌 공급자 목록이 사용됩니다.

relative-to

이 인증 정보 저장소 경로가 상대적인 기본 경로입니다.

type

인증 정보 저장소의 유형입니다(예: KeyStoreCredentialStore ).

3.3. 인증 정보 저장소 구현 속성

특성을 설정하여 인증 정보 저장소 구현을 구성할 수 있습니다.

Expand
표 3.3. 인증 정보 저장소 구현 속성
속성설명

cryptoAlg

외부 스토리지에서 항목을 암호화하는 데 사용할 암호화 알고리즘 이름입니다. 이 속성은 external 이 활성화된 경우에만 유효합니다. 기본값은 AES 입니다.

external

데이터가 외부 스토리지에 저장되고 keyAlias 로 암호화되었는지 여부입니다. 기본값은 false입니다.

externalPath

외부 스토리지의 경로를 지정합니다. 이 속성은 external 이 활성화된 경우에만 유효합니다.

keyAlias

데이터를 외부 스토리지에 암호화하거나 해독하는 데 사용되는 인증 정보 저장소 내의 시크릿 키 별칭입니다.

keyStoreType

PKCS11 과 같은 키 저장소 유형입니다. 기본값은 KeyStore.getDefaultType() 입니다.

3.4. expression=encryption 속성

특성을 설정하여 expression=encryption 를 구성할 수 있습니다.

Expand
표 3.4. expression=encryption 속성
속성설명

default-resolver

선택적 속성입니다. 암호화된 표현식이 정의되지 않은 경우 사용할 확인자입니다. 예를 들어 "exampleResolver"를 default-resolver 로 설정하고 /subsystem=elytron/expression=encryption:create-expression(clear-text=TestPassword) 명령을 사용하여 암호화된 표현식을 생성하는 경우 Elytron은 암호화된 표현식의 확인자로 "exampleResolver"를 사용합니다.

prefix

암호화된 표현식 내에서 사용할 접두사입니다. 기본값은 ENC 입니다. 이 속성은 ENC 가 이미 정의될 수 있는 경우에 대해 제공됩니다. 이미 정의된 ENC 접두사와 충돌하지 않는 한 이 값을 변경하지 않아야 합니다.

해결자

정의된 해결 방법 목록입니다. 확인자에는 다음과 같은 속성이 있습니다.

  • name - 참조하는 데 사용되는 개별 구성의 이름입니다.
  • credentials-store - 이 확인자가 사용하는 시크릿 키가 포함된 인증 정보 저장소 인스턴스에 대한 참조입니다.
  • secret-key - 시크릿 키의 별칭은 지정된 인증 정보 저장소 내에서 사용해야 합니다.

3.5. provider-loader 특성

특성을 설정하여 provider-loader 를 구성할 수 있습니다.

Expand
표 3.5. provider-loader 특성
속성설명

인수

공급자가 인스턴스화될 때 생성자에 전달할 인수입니다.

class-names

로드할 공급자의 정규화된 클래스 이름 목록입니다. 이는 서비스 로더가 검색한 공급자 뒤에 로드되며 중복은 건너뜁니다.

구성

초기화할 공급자에 전달할 키와 값 구성입니다.

module

공급자를 로드할 모듈의 이름입니다.

path

공급자를 초기화하는 데 사용할 파일의 경로입니다.

relative-to

구성 파일의 기본 경로입니다.

3.6. secret-key-credential-store 속성

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

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

create

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

default-alias

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

key-size

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

  • 128
  • 192
  • 256

path

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

채우기

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

relative-to

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

법적 공지

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
맨 위로 이동