검색

5.3. 클라이언트 승인

download PDF

5.3.1. 클라이언트 권한 부여 방법

주소 및 큐 생성 및 삭제, 메시지 전송 및 소비와 같은 브로커에서 작업을 수행하도록 클라이언트에 권한을 부여하려면 다음 방법을 사용할 수 있습니다.

사용자 및 역할 기반 권한 부여
인증된 사용자 및 역할에 대해 브로커 보안 설정을 구성합니다.
클라이언트 권한을 부여하도록 LDAP 구성
인증 및 권한 부여를 모두 처리하도록 LDAP( Lightweight Directory Access Protocol ) 로그인 모듈을 구성합니다. LDAP 로그인 모듈은 중앙 X.500 디렉터리 서버에 저장된 사용자 데이터에 대해 들어오는 인증 정보를 확인하고 사용자 역할을 기반으로 권한을 설정합니다.
클라이언트 권한을 부여하도록 Kerberos 구성
Kerberos 인증 및 권한 부여 서비스 (JAAS) Krb5LoginModule 로그인 모듈을 구성하여 인증 정보를 AMQ Broker 역할에 매핑하는 PropertiesLoginModule 또는 LDAPLoginModule 로그인 모듈에 전달합니다.

5.3.2. 사용자 및 역할 기반 권한 부여 구성

5.3.2.1. 권한 설정

권한은 broker.xml 구성 파일의 < security-setting > 요소를 통해 큐(주소 기반)에 대해 정의됩니다. 구성 파일의 < security- settings> 요소에서 < security-settings >의 여러 인스턴스를 정의할 수 있습니다. 정확한 주소 일치를 지정하거나 숫자 기호(#) 및 별표(*) 와일드카드 문자를 사용하여 일치하는 와일드카드를 정의할 수 있습니다.

주소와 일치하는 대기열 세트에 다른 권한을 부여할 수 있습니다. 이러한 권한은 다음 표에 표시되어 있습니다.

사용자가…​할 수 있도록 허용이 매개변수 사용…​

주소 생성

createAddress

주소 삭제

deleteAddress

일치하는 주소 아래에 Cryostat 큐 생성

createDurableQueue

일치하는 주소 아래의 Cryostat 큐 삭제

deleteDurableQueue

일치하는 주소에 정렬할 수 없는 큐를 생성

createNonDurableQueue

일치하는 주소에서 확인할 수 없는 큐 삭제

deleteNonDurableQueue

일치하는 주소로 메시지 보내기

전송

일치하는 주소에 바인딩된 큐의 메시지 사용

consume

관리 주소로 관리 메시지를 전송하여 관리 작업 호출

관리

일치하는 주소에 바인딩된 큐 검색

검색

관리 작업의 하위 집합에 대한 읽기 전용 액세스 권한

view

보기 권한으로 액세스 권한이 부여되지 않은 모든 작업인 변경 관리 작업에 액세스합니다.

edit

각 권한에 대해 권한이 부여된 역할 목록을 지정합니다. 지정된 사용자에게 역할 중 하나가 있는 경우 해당 주소 집합에 대한 권한이 부여됩니다.

다음 섹션에서는 권한에 대한 몇 가지 구성 예제를 보여줍니다.

5.3.2.1.1. 단일 주소에 대한 메시지 프로덕션 구성

다음 절차에서는 단일 주소에 대한 메시지 프로덕션 권한을 구성하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치 키의 경우 주소를 지정합니다. 예를 들면 다음과 같습니다.

    <security-settings>
        <security-setting match="my.destination">
            <permission type="send" roles="producer"/>
        </security-setting>
    </security-settings>

    이전 구성을 기반으로 생산자 역할의 멤버는 my.destination 주소에 대한 전송 권한이 있습니다.

5.3.2.1.2. 단일 주소에 대한 메시지 사용 구성

다음 절차에서는 단일 주소에 대한 메시지 사용 권한을 구성하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치 키의 경우 주소를 지정합니다. 예를 들면 다음과 같습니다.

    <security-settings>
        <security-setting match="my.destination">
            <permission type="consume" roles="consumer"/>
        </security-setting>
    </security-settings>

    이전 구성을 기반으로 소비자 역할의 멤버는 my.destination 주소에 대한 사용 권한을 갖습니다.

5.3.2.1.3. 모든 주소에 대한 전체 액세스 구성

다음 절차에서는 모든 주소 및 연결된 큐에 대한 전체 액세스를 구성하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치 키의 경우 모든 주소에 대한 액세스를 구성하려면 숫자 기호(#) 와일드카드 문자를 지정합니다. 예를 들면 다음과 같습니다.

    <security-settings>
        <security-setting match="#">
            <permission type="createDurableQueue" roles="guest"/>
            <permission type="deleteDurableQueue" roles="guest"/>
            <permission type="createNonDurableQueue" roles="guest"/>
            <permission type="deleteNonDurableQueue" roles="guest"/>
            <permission type="createAddress" roles="guest"/>
            <permission type="deleteAddress" roles="guest"/>
            <permission type="send" roles="guest"/>
            <permission type="browse" roles="guest"/>
            <permission type="consume" roles="guest"/>
            <permission type="manage" roles="guest"/>
        </security-setting>
    </security-settings>

    이전 구성을 기반으로 모든 큐에 대한 guest 역할의 멤버에게 모든 권한이 부여됩니다. 이 기능은 모든 사용자에게 게스트 역할을 할당하도록 익명 인증이 구성된 개발 시나리오에서 유용할 수 있습니다.

추가 리소스

5.3.2.1.4. 여러 보안 설정 구성

다음 예제 절차에서는 일치하는 주소 집합에 대해 여러 보안 설정을 개별적으로 구성하는 방법을 보여줍니다. 이는 모든 주소에 대한 전체 액세스 권한을 부여하는 방법을 보여주는 이 섹션의 이전 예제와 대조됩니다.

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치 키의 경우 일치하는 주소 집합에 설정을 적용하려면 숫자 기호(#) 와일드카드 문자를 포함합니다. 예를 들면 다음과 같습니다.

    <security-setting match="globalqueues.europe.#">
       <permission type="createDurableQueue" roles="admin"/>
       <permission type="deleteDurableQueue" roles="admin"/>
       <permission type="createNonDurableQueue" roles="admin, guest, europe-users"/>
       <permission type="deleteNonDurableQueue" roles="admin, guest, europe-users"/>
       <permission type="send" roles="admin, europe-users"/>
       <permission type="consume" roles="admin, europe-users"/>
    </security-setting>
    match=globalqueues.europe.#
    숫자 기호(#) 와일드카드 문자는 브로커에서 "모든 순서의 단어"로 해석됩니다. 마침표(.)로 구분됩니다. 이 예제에서 보안 설정은 globalqueues.europe 문자열로 시작하는 모든 주소에 적용됩니다.
    permission type="createDurableQueue"
    admin 역할이 있는 사용자만 globalqueues.europe 문자열로 시작하는 주소에 바인딩된 Cryostat 큐를 생성하거나 삭제할 수 있습니다.
    permission type="createNonDurableQueue"
    역할 admin,guest 또는 europe-users 가 있는 모든 사용자는 globalqueues.europe 문자열로 시작하는 주소에 바인딩된 임시 큐를 만들거나 삭제할 수 있습니다.
    권한 유형="send"
    역할 admin 또는 europe-users 를 사용하는 모든 사용자는 문자열 globalqueues.europe로 시작하는 주소에 바인딩된 큐로 메시지를 보낼 수 있습니다.
    permission type="consume"
    역할 admin 또는 europe-users 를 사용하는 모든 사용자는 문자열 globalqueues.europe로 시작하는 주소에 바인딩된 대기열의 메시지를 사용할 수 있습니다.
  3. (선택 사항) 보다 좁은 주소 세트에 다른 보안 설정을 적용하려면 다른 < security-setting> 요소를 추가합니다. 일치 키의 경우 더 구체적인 텍스트 문자열을 지정합니다. 예를 들면 다음과 같습니다.

    <security-setting match="globalqueues.europe.orders.#">
       <permission type="send" roles="europe-users"/>
       <permission type="consume" roles="europe-users"/>
    </security-setting>

    두 번째 security-setting 요소에서 globalqueues.europe.orders.# match는 첫 번째 security-setting 요소에 지정된 globalqueues.europe.# 보다 더 구체적입니다. globalqueues.europe.orders.# 과 일치하는 모든 주소의 경우 createDurableQueue,deleteDurableQueue,createNonDurableQueue,deleteNonDurableQueue 에서는 파일의 첫 번째 security-setting 요소에서 상속 되지 않습니다. 예를 들어 globalqueues.europe.orders.plastics 주소의 경우 존재하는 유일한 권한은 europe-users 역할에 대해 전송소비 됩니다.

    따라서 한 security-setting 블록에 지정된 권한이 다른 블록에 상속되지 않으므로 해당 권한을 지정하지 않고 보다 구체적인 security-setting 블록에서 권한을 효과적으로 거부할 수 있습니다.

5.3.2.1.5. 사용자로 대기열 구성

큐가 자동으로 생성되면 연결 클라이언트의 사용자 이름이 큐에 할당됩니다. 이 사용자 이름은 큐의 메타데이터로 포함됩니다. 이름은 Cryostat 및 AMQ Broker 관리 콘솔에 의해 노출됩니다.

다음 절차에서는 브로커 구성에 수동으로 정의한 큐에 사용자 이름을 추가하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. 지정된 큐의 경우 사용자 키를 추가합니다. 값을 할당합니다. 예를 들면 다음과 같습니다.

    <address name="ExampleQueue">
        <anycast>
           <queue name="ExampleQueue" user="admin"/>
        </anycast>
    </address>

    이전 구성을 기반으로 admin 사용자는 ExampleQueue 큐에 할당됩니다.

참고
  • 큐에서 사용자를 구성해도 해당 큐에 대한 보안 의미 체계는 변경되지 않으며 해당 큐의 메타데이터에만 사용됩니다.
  • 사용자 간 매핑과 보안 관리자 라는 구성 요소에서 처리하는 역할 간의 매핑입니다. 보안 관리자는 브로커에 저장된 속성 파일에서 사용자 자격 증명을 읽습니다. 기본적으로 AMQ Broker는 org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager 보안 관리자를 사용합니다. 이 기본 보안 관리자는 JAAS 및 Red Hat JBoss EAP(JBoss Enterprise Application Platform) 보안과의 통합을 제공합니다.

    사용자 정의 보안 관리자를 사용하는 방법에 대한 자세한 내용은 5.6.2절. “사용자 정의 보안 관리자 지정” 을 참조하십시오.

5.3.2.2. 역할 기반 액세스 제어 구성

RBAC( 역할 기반 액세스 제어 )는 속성 및 메서드의 액세스를 제한하는 데 사용됩니다. Cryostat는 AMQ Broker에서 관리 작업을 지원하기 위해 관리 API를 노출하는 방법입니다.

다음 방법 중 하나를 사용하여 Cryostat에 대한 액세스를 제한할 수 있습니다.

  • 기본 방법인 management.xml 파일에서 권한 부여 요소를 구성합니다.
  • broker.xml 파일에서 보안 설정을 구성합니다.

management.xml 파일을 업데이트할 때와 달리 broker.xml 파일의 보안 설정을 변경한 후에는 브로커를 다시 시작할 필요가 없습니다.

5.3.2.2.1. management.xml 파일에서 역할 기반 액세스 제어 구성.

관리 작업에 대한 역할 기반 액세스 제어를 구성하는 기본 방법은 management.xml 파일에서 권한 부여 요소를 구성하는 것입니다.

다음 예제 절차에서는 역할을 특정 Cryostat 및 해당 속성 및 메서드에 매핑하는 방법을 보여줍니다.

사전 요구 사항

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/management.xml 구성 파일을 엽니다.
  2. role-access 요소를 검색하고 구성을 편집합니다. 예를 들면 다음과 같습니다.

    <role-access>
        <match domain="org.apache.activemq.artemis">
           <access method="list*" roles="view,update,amq"/>
           <access method="get*" roles="view,update,amq"/>
           <access method="is*" roles="view,update,amq"/>
           <access method="set*" roles="update,amq"/>
           <access method="*" roles="amq"/>
        </match>
    </role-access>
    • 이 경우 도메인 이름이 org.apache.activemq.apache 인 모든 Cryostat 속성에 일치가 적용됩니다.
    • 일치하는 Cryostat 속성에 대한 보기,업데이트 또는 amq 역할의 액세스는 목록*, get* , set*, is** 액세스 방법 중 에 대한 액세스 권한을 제어합니다. method="*"( wildcard) 구문은 구성에 나열되지 않은 다른 모든 방법을 지정하는 catch-all 방법으로 사용됩니다. 구성의 각 액세스 메서드는 Cryostat 메서드 호출로 변환됩니다.
    • 호출된 Cryostat 메서드는 구성에 나열된 메서드와 일치합니다. 예를 들어 org.apache.activemq.artemis 도메인을 사용하여 Cryostat에서 listMessages 라는 메서드를 호출하면 브로커는 목록 메서드 구성에 정의된 역할에 다시 액세스합니다.
    • 전체 메서드 이름을 사용하여 액세스를 구성할 수도 있습니다. 예를 들면 다음과 같습니다.

      <access method="listMessages" roles="view,update,amq"/>
  3. 브로커를 시작하거나 다시 시작합니다.

    • Linux에서: & lt;broker_instance_dir&gt; /bin/artemis 실행
    • Windows에서: & lt;broker_instance_dir> \bin\artemis-service.exe start

      Cryostat 속성과 일치하는 특성을 추가하여 도메인 내의 특정 Cryostat를 일치시킬 수도 있습니다.

5.3.2.2.1.1. 역할 기반 액세스 예

이 섹션에서는 역할 기반 액세스 제어를 적용하는 다음 예를 보여줍니다.

다음 예제에서는 특성을 사용하여 지정된 도메인의 모든 큐에 역할을 매핑하는 방법을 보여줍니다.

<match domain="org.apache.activemq.artemis" key="subcomponent=queues">
   <access method="list*" roles="view,update,amq"/>
   <access method="get*" roles="view,update,amq"/>
   <access method="is*" roles="view,update,amq"/>
   <access method="set*" roles="update,amq"/>
   <access method="*" roles="amq"/>
</match>

다음 예제에서는 특성을 사용하여 이름이 지정된 특정 큐에 역할을 매핑하는 방법을 보여줍니다. 이 예제에서 명명된 큐는 예제Queue 입니다.

<match domain="org.apache.activemq.artemis" key="queue=exampleQueue">
   <access method="list*" roles="view,update,amq"/>
   <access method="get*" roles="view,update,amq"/>
   <access method="is*" roles="view,update,amq"/>
   <access method="set*" roles="update,amq"/>
   <access method="*" roles="amq"/>
</match>

다음 예제에서는 지정된 접두사가 포함된 모든 큐에 역할을 매핑하는 방법을 보여줍니다. 이 예에서는 별표(*) 와일드카드 연산자가 접두사로 시작하는 모든 큐 이름과 일치하도록 사용됩니다.

<match domain="org.apache.activemq.artemis" key="queue=example*">
   <access method="list*" roles="view,update,amq"/>
   <access method="get*" roles="view,update,amq"/>
   <access method="is*" roles="view,update,amq"/>
   <access method="set*" roles="update,amq"/>
   <access method="*" roles="amq"/>
</match>

동일한 특성 집합(예: 다양한 대기열 세트)에 대해 역할을 다르게 매핑해야 할 수 있습니다. 이 경우 구성 파일에 일치하는 요소를 여러 개 포함할 수 있습니다. 그러나 동일한 도메인에 여러 일치 항목을 가질 수 있습니다.

예를 들어 다음과 같이 구성된 두 개의 <match > 요소를 고려해 보십시오.

<match domain="org.apache.activemq.artemis" key="queue=example*">

<match domain="org.apache.activemq.artemis" key="queue=example.sub*">

이 구성을 기반으로 org.apache.activemq.artemis 도메인에 있는 example.sub.queue 라는 큐는 두 와일드카드 키 표현식과 일치합니다. 따라서 브로커는 큐에 매핑할 역할 집합, 첫 번째 일치 요소에 지정된 역할 또는 두 번째 일치 요소에 지정된 역할을 결정하는 우선순위 지정 체계가 필요합니다.

동일한 도메인에 일치하는 항목이 여러 개인 경우 브로커는 역할을 매핑할 때 다음 우선순위 지정 체계를 사용합니다.

  • 와일드카드 일치보다 정확한 일치 항목의 우선순위가 지정됨
  • 더 긴 와일드카드 일치는 더 짧은 와일드카드 일치보다 우선 순위가 지정됩니다.

이 예에서 긴 와일드카드 표현식은 example.sub.queue 의 큐 이름과 가장 근접하게 일치하므로 브로커는 두 번째 < match > 요소에 구성된 role-mapping을 적용합니다.

참고

default-access 요소는 role-access 또는 허용 목록 구성을 사용하여 처리되지 않는 모든 메서드 호출의 catch-all 요소입니다. default-accessrole-access 요소에는 동일한 match 요소 의미 체계가 있습니다.

5.3.2.2.1.2. allowlist 요소 구성

허용 목록은 사용자 인증이 필요하지 않은 사전 승인 도메인 또는 Cryostats 집합입니다. 인증을 바이패스해야 하는 도메인 목록 또는 도메인 목록 또는 둘 다 제공할 수 있습니다. 예를 들어 allowlist 를 사용하여 AMQ Broker 관리 콘솔에 필요한 모든 Cryostat를 지정할 수 있습니다.

다음 예제 절차에서는 allowlist 요소를 구성하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/management.xml 구성 파일을 엽니다.
  2. allowlist 요소를 검색하고 구성을 편집합니다.

    <allowlist>
       <entry domain="hawtio"/>
    </allowlist>

    이 예에서 도메인 hawtio 가 있는 모든 Cryostat는 인증 없이 액세스할 수 있습니다. 또한 < entry domain="hawtio" key="type=*"/ > 형식의 와일드카드 항목을 사용할 수도 있습니다.

  3. 브로커를 시작하거나 다시 시작합니다.

    • Linux에서: & lt;broker_instance_dir&gt; /bin/artemis 실행
    • Windows에서: & lt;broker_instance_dir> \bin\artemis-service.exe start
5.3.2.2.2. broker.xml 파일에서 역할 기반 액세스 제어 구성

management.xml 파일 대신 broker.xml 파일에서 관리 작업에 대한 역할 기반 액세스 제어를 구성할 수 있습니다. broker.xml 파일에서 권한을 업데이트하려면 브로커를 다시 시작할 필요가 없습니다.

broker.xml 파일에서 관리 작업에 대한 보기 또는 편집 권한을 부여할 수 있습니다. 보기 또는 편집 권한이 있는 역할에 사용할 수 있는 특정 관리 작업은 사전 정의된 정규식으로 제어됩니다. 정규식과 일치하는 모든 작업에는 권한과 기타 모든 작업에 대한 편집 권한이 있는 역할로 액세스할 수 있습니다.

사전 요구 사항

프로세스

  1. 브로커가 이 파일에서 기본 RBAC 구성을 사용하지 못하도록 management.xml 파일에서 권한 부여 요소 구성을 삭제합니다.

    1. < broker_instance_dir>/etc/management.xml 파일을 편집합니다.
    2. 파일에서 권한 부여 요소 구성을 삭제합니다.
    3. < broker_instance_dir>/etc/management.xml 파일을 저장합니다.
  2. 브로커 JVM에 환경 변수를 추가하여 broker.xml 파일에서 RBAC 구성을 사용하도록 브로커를 구성합니다.

    1. &lt ;broker_instance_dir>/etc/artemis.profile 파일을 엽니다.
    2. Java 시스템 인수의 JAVA_ARGS 목록에 다음 인수를 추가합니다.

      -Djavax.management.builder.initial=org.apache.activemq.artemis.core.server.management.ArtemisRbacMBeanServerBuilder

    3. Artemis .profile 파일을 저장합니다.
  3. &lt ;broker_instance_dir> /etc/broker.xml 파일을 열어 관리 작업에 대한 RBAC를 구성합니다.
  4. security-settings 요소를 검색하고 관리 작업에 대한 security-setting 요소를 추가합니다.

    관리 작업의 일치 주소 형식은 다음과 같습니다.

    <_management-rbac-prefix_>.<_resource type_>.<_resource name_>.<_operation_>

    management-rbac-prefix 매개변수의 기본값은 mops 입니다.

    다음 예제 RBAC 구성에서 일치 주소의 숫자 기호(#)는 admin 역할 보기를 부여하고 모든 Cryostat에 대한 권한을 편집합니다.

    <security-settings>
      ..
      <security-setting match="mops.#">
       <permission type="view" roles="admin"/>
       <permission type="edit" roles="admin"/>
      </security-setting>
      ..
    </security-setting>
  5. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 저장합니다.

관리 작업을 위한 역할 기반 액세스 제어의 기타 예

다음 예제에서는 manager 역할 보기activemq.management 주소에 대한 편집 권한을 부여합니다. 작업 위치의 별표(*)는 모든 작업에 대한 액세스 권한을 부여합니다.

<security-setting match="mops.address.activemq.management.*">
   <permission type="view" roles="manager"/>
</security-setting>

다음 예제에는 브로커를 사용하여 지정된 작업을 수행할 수 있는 모든 사용자 권한을 거부하는 빈 roles 목록이 있습니다.

<security-setting match="mops.broker.forceFailover">
   <permission type="edit" roles=""/>
</security-setting>

5.3.2.3. 리소스 제한 설정

경우에 따라 특정 사용자가 권한 부여 및 인증과 관련된 일반 보안 설정을 초과하여 수행할 수 있는 특정 제한을 설정하는 것이 유용합니다.

5.3.2.3.1. 연결 및 큐 제한 구성

다음 예제 절차에서는 사용자가 생성할 수 있는 연결 및 대기열 수를 제한하는 방법을 보여줍니다.

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. resource-limit-settings 요소를 추가합니다. max-connectionsmax-queues 의 값을 지정합니다. 예를 들면 다음과 같습니다.

    <resource-limit-settings>
       <resource-limit-setting match="myUser">
          <max-connections>5</max-connections>
          <max-queues>3</max-queues>
       </resource-limit-setting>
    </resource-limit-settings>
    max-connections
    일치하는 사용자가 브로커에서 생성할 수 있는 세션 수를 정의합니다. 기본값은 -1 이며 이는 제한이 없음을 의미합니다. 세션 수를 제한하려면 AMQ Core Protocol JMS 클라이언트에서 브로커에 대한 각 연결이 두 개의 세션을 생성하는 경우를 고려하십시오.
    max-queues
    일치하는 사용자가 생성할 수 있는 대기열 수를 정의합니다. 기본값은 -1 이며 이는 제한이 없음을 의미합니다.
참고

브로커 구성의 address-setting 요소에 지정할 수 있는 일치 문자열과 달리 resource-limit-settings 에서 지정하는 일치 문자열은 와일드카드 구문을 사용할 수 없습니다. 대신 match 문자열은 리소스 제한 설정을 적용할 특정 사용자를 정의합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.