21장. 보안
Apache Karaf는 OSGi 호환 방식으로 JAAS(Java Authentication and Authorization Service)를 제공하는 고급적이고 유연한 보안 시스템을 제공합니다.
동적 보안 시스템을 제공합니다.
Apache Karaf 보안 프레임워크는 다음에 대한 액세스를 제어하기 위해 내부적으로 사용됩니다.
- OSGi 서비스(개발 가이드에 설명되어 있음)
- 콘솔 명령
- Cryostat 계층
- WebConsole
애플리케이션은 보안 프레임워크를 사용할 수도 있습니다(자세한 내용은 개발자 가이드 참조).
21.1. realms
Apache Karaf는 여러 영역을 관리할 수 있습니다. 영역에는 이 영역에서 인증 및/또는 권한 부여에 사용할 로그인 모듈 정의가 포함되어 있습니다. 로그인 모듈은 영역에 대한 인증 및 권한 부여를 정의합니다.
jaas:realm-list
명령은 현재 정의된 영역을 나열합니다.
karaf@root()> jaas:realm-list Index | Realm Name | Login Module Class Name ----------------------------------------------------------------------------------- 1 | karaf | org.apache.karaf.jaas.modules.properties.PropertiesLoginModule 2 | karaf | org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
Apache Karaf가 기본 영역 karaf
를 제공하는 것을 확인할 수 있습니다.
이 영역에는 두 가지 로그인 모듈이 있습니다.
-
PropertiesLoginModule
은etc/users.properties
파일을 사용자, 그룹, 역할 및 암호의 백엔드로 사용합니다. 이 로그인 모듈은 사용자를 인증하고 사용자의 역할을 반환합니다. -
PublickeyLoginModule
은 SSHd에서 특히 사용합니다.etc/keys.properties
파일을 사용합니다. 이 파일에는 각 사용자와 연결된 공개 키가 포함되어 있습니다.
Apache Karaf는 추가 로그인 모듈을 제공합니다(자세한 내용은 개발자 가이드 참조).
- JDBCLoginModule은 데이터베이스를 백엔드로 사용
- LdapLoginModule은 LDAP 서버를 백엔드로 사용
- SyncopeLoginModule은 Apache Syncope를 백엔드로 사용
- OsgiConfigLoginModule은 구성을 백엔드로 사용
- Krb5LoginModule은 Kerberos 서버를 백엔드로 사용
- GSSAPILdapLoginModule은 LDAP 서버를 백엔드로 사용하지만 LDAP 서버 인증을 다른 백엔드(일반적으로 Krb5LoginModule)에 위임합니다.
기존 realm, login 모듈을 관리하거나 jaas:realm-manage
명령을 사용하여 고유한 영역을 생성할 수 있습니다.
21.1.1. 사용자, 그룹, 역할 및 암호
지금까지 본 것처럼 Apache Karaf는 PropertiesLoginModule을 사용합니다.
이 로그인 모듈은 etc/users.properties
파일을 사용자, 그룹, 역할 및 암호의 스토리지로 사용합니다.
초기 etc/users.properties
파일에는 다음이 포함됩니다.
################################################################################ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################################ # # This file contains the users, groups, and roles. # Each line has to be of the format: # # USER=PASSWORD,ROLE1,ROLE2,... # USER=PASSWORD,_g_:GROUP,... # _g_\:GROUP=ROLE1,ROLE2,... # # All users, grousp, and roles entered in this file are available after Karaf startup # and modifiable via the JAAS command group. These users reside in a JAAS domain # with the name "karaf". # karaf = karaf,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer
이 파일에서는 기본적으로 한 명의 사용자가 있습니다. karaf
. 기본 암호는 karaf
입니다.
karaf
사용자는 하나의 그룹인 admingroup
의 멤버입니다.
그룹은 항상 g:
접두사가 지정됩니다. 이 접두사가 없는 항목은 사용자입니다.
그룹은 역할 세트를 정의합니다. 기본적으로 admin
은 그룹 ,group
admin
,manager
, viewer
역할을 정의합니다.
즉, karaf
사용자는 admingroup
에서 정의한 역할을 갖습니다.
21.1.1.1. 명령
jaas:*
명령은 콘솔에서 영역, 사용자, 그룹, 역할을 관리합니다.
21.1.1.1.1. jaas:realm-list
이전에 이 섹션에서 jaas:realm-list
를 사용했습니다.
jaas:realm-list
명령은 각 영역의 영역 및 로그인 모듈을 나열합니다.
karaf@root()> jaas:realm-list Index | Realm Name | Login Module Class Name ----------------------------------------------------------------------------------- 1 | karaf | org.apache.karaf.jaas.modules.properties.PropertiesLoginModule 2 | karaf | org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
여기에 두 개의 로그인 모듈 (PropertiesLoginModule
및 PublickeyLoginModule
)을 포함하는 하나의 영역 (karaf
)이 있습니다.
인덱스
는 jaas:realm-manage
명령에서 사용할 realm/login 모듈을 쉽게 식별할 수 있습니다.
21.1.1.1.2. jaas:realm-manage
jaas:realm-manage
명령은 login 모듈에서 사용자, 그룹 및 역할을 관리할 수 있는 realm/login 모듈 편집 모드에서 전환합니다.
관리할 realm 및 로그인 모듈을 식별하려면 --index
옵션을 사용하면 됩니다. 인덱스는 jaas:realm-list
명령으로 표시됩니다.
karaf@root()> jaas:realm-manage --index 1
또 다른 방법은 --realm
및 --module
옵션을 사용하는 것입니다. --realm
옵션에는 realm 이름이 필요하며 --module
옵션에는 로그인 모듈 클래스 이름이 필요합니다.
karaf@root()> jaas:realm-manage --realm karaf --module org.apache.karaf.jaas.modules.properties.PropertiesLoginModule
21.1.1.1.3. jaas:user-list
편집 모드에 있는 경우 jaas:user-list
:을 사용하여 로그인 모듈의 사용자를 나열할 수 있습니다.
karaf@root()> jaas:user-list User Name | Group | Role -------------------------------- karaf | admingroup | admin karaf | admingroup | manager karaf | admingroup | viewer
역할별로 사용자 이름과 그룹을 확인할 수 있습니다.
21.1.1.1.4. jaas:user-add
jaas:user-add
명령은 현재 편집한 로그인 모듈에 새 사용자(및 암호)를 추가합니다.
karaf@root()> jaas:user-add foo bar
변경 사항(사용자 추가)을 "커밋"하려면 jaas:update
명령을 실행해야 합니다.
karaf@root()> jaas:update karaf@root()> jaas:realm-manage --index 1 karaf@root()> jaas:user-list User Name | Group | Role -------------------------------- karaf | admingroup | admin karaf | admingroup | manager karaf | admingroup | viewer foo | |
반면 사용자 추가를 롤백하려면 jaas:cancel
명령을 사용할 수 있습니다.
21.1.1.1.5. jaas:user-delete
jaas:user-delete
명령은 현재 편집된 로그인 모듈에서 사용자를 삭제합니다.
karaf@root()> jaas:user-delete foo
jaas:user-add
명령과 마찬가지로 jaas:update
를 사용하여 변경 사항(또는 jaas:cancel
to rollback)을 커밋해야 합니다.
karaf@root()> jaas:update karaf@root()> jaas:realm-manage --index 1 karaf@root()> jaas:user-list User Name | Group | Role -------------------------------- karaf | admingroup | admin karaf | admingroup | manager karaf | admingroup | viewer
21.1.1.1.6. JAAS:group-add
jaas:group-add
명령은 현재 편집된 로그인 모듈에서 그룹을 할당하고 결국 그룹을 생성합니다.
karaf@root()> jaas:group-add karaf mygroup
21.1.1.1.7. JAAS:group-delete
jaas:group-delete
명령은 현재 편집된 로그인 모듈의 그룹에서 사용자를 제거합니다.
karaf@root()> jaas:group-delete karaf mygroup
21.1.1.1.8. JAAS:group-role-add
jaas:group-role-add
명령은 현재 편집된 로그인 모듈의 그룹에 역할을 추가합니다.
karaf@root()> jaas:group-role-add mygroup myrole
21.1.1.1.9. JAAS:group-role-delete
jaas:group-role-delete
명령은 현재 편집된 로그인 모듈의 그룹에서 역할을 제거합니다.
karaf@root()> jaas:group-role-delete mygroup myrole
21.1.1.1.10. JAAS:update
jaas:update
명령은 로그인 모듈 백엔드에서 변경 사항을 커밋합니다. 예를 들어 PropertiesLoginModule의 경우 etc/users.properties
는 jaas:update
명령을 실행한 후에만 업데이트됩니다.
21.1.1.1.11. JAAS:cancel
jaas:cancel
명령은 변경 사항을 롤백하고 로그인 모듈 백엔드를 업데이트하지 않습니다.
21.1.2. 암호 암호화
기본적으로 암호는 etc/users.properties
파일에 명확한 형식으로 저장됩니다.
etc/org.apache.karaf.jaas.cfg
구성 파일에서 암호화를 활성화할 수 있습니다.
################################################################################ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################################ # # Boolean enabling / disabling encrypted passwords # encryption.enabled = false # # Encryption Service name # the default one is 'basic' # a more powerful one named 'jasypt' is available # when installing the encryption feature # encryption.name = # # Encryption prefix # encryption.prefix = {CRYPT} # # Encryption suffix # encryption.suffix = {CRYPT} # # Set the encryption algorithm to use in Karaf JAAS login module # Supported encryption algorithms follow: # MD2 # MD5 # SHA-1 # SHA-256 # SHA-384 # SHA-512 # encryption.algorithm = MD5 # # Encoding of the encrypted password. # Can be: # hexadecimal # base64 # encryption.encoding = hexadecimal
encryption.enabled
y가 true로 설정되면 암호 암호화가 활성화됩니다.
암호화가 활성화되면 사용자가 처음 로그인할 때 암호가 암호화됩니다. 암호화된 암호는 접두사가 지정되고 \{CRYPT\
}로 접미사가 지정됩니다. 암호를 다시 암호화하려면 \{CRYPT\
} 접두사 및 접미사 없이 암호를 clear( etc/users.properties
파일)으로 재설정할 수 있습니다. Apache Karaf는 이 암호가 붙지 않고 \{CRYPT\
}로 접두사가 지정되어 있음을 감지하고 다시 암호화합니다.
etc/org.apache.karaf.jaas.cfg
구성 파일을 사용하면 고급 암호화 동작을 정의할 수 있습니다.
-
encryption.prefix
속성은 암호화된 암호로 "플래그"에 대한 접두사를 정의합니다. 기본값은\{CRYPT\
}입니다. -
encryption.suffix
속성은 암호로 암호화된 "플래그"에 대한 접미사를 정의합니다. 기본값은\{CRYPT\
}입니다. -
encryption.algorithm
속성은 암호화(digest)에 사용할 알고리즘을 정의합니다. 가능한 값은MD2
,MD5
,SHA-1,
,SHA
-256SHA-384
,SHA-512
입니다. 기본값은MD5
입니다. -
encryption.encoding
속성은 암호화된 암호의 인코딩을 정의합니다. 가능한 값은16진수
또는base64
입니다. 기본값은16진수
입니다.
21.1.3. 키로 인증 관리
SSH 계층의 경우 Karaf는 키로 인증을 지원하므로 암호를 제공하지 않고 로그인할 수 있습니다.
SSH 클라이언트(Karaf 자체에서 제공하는 bin/client 또는 OpenSSH와 같은 ssh 클라이언트)는 Karaf SSHD(서버 측)에서 담당자를 식별하는 공개/개인 키 쌍을 사용합니다.
연결할 수 있는 키는 형식에 따라 etc/keys.properties
파일에 저장됩니다.
user=key,role
기본적으로 Karaf는 karaf 사용자에 대한 키를 허용합니다.
# karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,admin
보안상의 이유로 이 키는 비활성화되어 있습니다. 클라이언트당 키 쌍을 생성하고 etc/keys.properties
파일을 업데이트하는 것이 좋습니다.
키 쌍을 생성하는 가장 쉬운 방법은 OpenSSH를 사용하는 것입니다.
다음을 사용하여 키 쌍을 만들 수 있습니다.
ssh-keygen -t dsa -f karaf.id_dsa -N karaf
이제 공개 및 개인 키가 있습니다.
-rw------- 1 jbonofre jbonofre 771 Jul 25 22:05 karaf.id_dsa -rw-r--r-- 1 jbonofre jbonofre 607 Jul 25 22:05 karaf.id_dsa.pub
etc/keys.properties
에 있는 karaf.id_dsa.pub
파일의 내용을 복사할 수 있습니다.
karaf=AAAAB3NzaC1kc3MAAACBAJLj9vnEhu3/Q9Cvym2jRDaNWkATgQiHZxmErCmiLRuD5Klfv+HT/+8WoYdnvj0YaXFP80phYhzZ7fbIO2LRFhYhPmGLa9nSeOsQlFuX5A9kY1120yB2kxSIZI0fU2hy1UCgmTxdTQPSYtdWBJyvO/vczoX/8I3FziEfss07Hj1NAAAAFQD1dKEzkt4e7rBPDokPOMZigBh4kwAAAIEAiLnpbGNbKm8SNLUEc/fJFswg4G4VjjngjbPZAjhkYe4+H2uYmynry6V+GOTS2kaFQGZRf9XhSpSwfdxKtx7vCCaoH9bZ6S5Pe0voWmeBhJXi/Sww8f2stpitW2Oq7V7lDdDG81+N/D7/rKDD5PjUyMsVqc1n9wCTmfqmi6XPEw8AAACAHAGwPn/Mv7P9Q9+JZRWtGq+i4pL1zs1OluiStCN9e/Ok96t3gRVKPheQ6IwLacNjC9KkSKrLtsVyepGA+V5j/N+Cmsl6csZilnLvMUTvL/cmHDEEhTIQnPNrDDv+tED2BFqkajQqYLgMWeGVqXsBU6IT66itZlYtrq4v6uDQG/o=,admin
karaf.id_dsa
개인 키를 사용하도록 클라이언트에 지정합니다.
bin/client -k ~/karaf.id_dsa
또는 ssh로
ssh -p 8101 -i ~/karaf.id_dsa karaf@localhost
21.1.4. RBAC
Apache Karaf는 역할을 사용하여 RBAC(역할 기반 액세스 제어) 시스템이라는 리소스에 대한 액세스를 제어합니다.
역할은 다음을 제어하는 데 사용됩니다.
- OSGi 서비스에 액세스
- 콘솔에 대한 액세스(명령 실행을 제어)
- Cryostat(MBean 및/또는 작업에 대한 액세스)
- WebConsole 액세스
21.1.4.1. OSGi 서비스
OSGi 서비스 RBAC 지원에 대한 자세한 내용은 개발자 가이드에 설명되어 있습니다.
21.1.4.2. 콘솔
콘솔 RBAC는 OSGi 서비스 RBAC를 지원합니다. 실제로 Apache Karaf에서 모든 콘솔 명령은 OSGi 서비스로 정의됩니다.
콘솔 명령 이름은 scope:name
형식을 따릅니다.
ACL(액세스 목록)은 etc/org.apache.karaf.command.acl.<scope>.cfg 구성 파일에 정의되어 있습니다.
여기서 < scope
>는 명령 범위입니다.
예를 들어 etc/org.apache.karaf.command.acl.feature.cfg
구성 파일을 생성하여 feature:*
명령에 대한 ACL을 정의할 수 있습니다. 이 etc/org.apache.karaf.command.acl.feature.cfg
구성 파일에서 다음을 설정할 수 있습니다.
list = viewer info = viewer install = admin uninstall = admin
여기서는 feature:list
및 feature:info
명령을 뷰어
역할이 있는 사용자가 실행할 수 있는 반면 feature:install
및 feature:uninstall
명령은 관리자
역할이 있는 사용자만 실행할 수 있습니다. 관리 그룹의 사용자에게도 뷰어 역할이 있으므로 모든 작업을 수행할 수 있습니다.
Apache Karaf 명령 ACL은 지정된 명령 범위 내에서 를 사용하여 액세스를 제어할 수 있습니다.
-
명령 이름 regex (예:
name = role
) -
명령 이름 및 옵션 또는 인수 값 regex(예:
name[/.[0-9][0-9]+./] = 100 이상의 인수 값으로만 이름을 실행하는 역할
)
명령 이름 및 options/arguments는 모두 정확히 일치하는 또는 regex 일치를 지원합니다.
기본적으로 Apache Karaf는 다음 명령 ACL을 정의합니다.
-
etc/org.apache.karaf.command.acl.bundle.cfg
구성 파일은bundle:*
명령에 대한 ACL을 정의합니다. 이 ACL은 시스템 번들에 대한bundle:*
명령의 실행을admin
역할이 있는 사용자에게만 제한하지만, 비 시스템 번들에 대한bundle:*
명령은관리자
역할이 있는 사용자가 실행할 수 있습니다. -
etc/org.apache.karaf.command.acl.config.cfg
구성 파일은config:*
명령에 대한 ACL을 정의합니다. 이 ACL은jmx.acl.*
,org.apache.karaf.command.acl.*
,org.apache.karaf.service.acl.*
구성 PID를admin
역할의 사용자로config:*
명령 실행을 제한합니다. 다른 구성 PID의 경우manager
역할의 사용자는config:*
명령을 실행할 수 있습니다. -
etc/org.apache.karaf.command.acl.feature.cfg
구성 파일은feature:*
명령에 대한 ACL을 정의합니다.관리자
역할이 있는 사용자만feature:install
및feature:uninstall
명령을 실행할 수 있습니다. 기타기능:*
명령은 모든 사용자가 실행할 수 있습니다. -
etc/org.apache.karaf.command.acl.jaas.cfg
구성 파일은jaas:*
명령에 대한 ACL을 정의합니다.관리자
역할이 있는 사용자만jaas:update
명령을 실행할 수 있습니다. 다른jaas:*
명령은 모든 사용자가 실행할 수 있습니다. -
etc/org.apache.karaf.command.acl.kar.cfg
구성 파일은kar:*
명령에 대한 ACL을 정의합니다.admin
역할이 있는 사용자만kar:install
및kar:uninstall
명령을 실행할 수 있습니다. 기타kar:*
명령은 모든 사용자가 실행할 수 있습니다. -
etc/org.apache.karaf.command.acl.shell.cfg
구성 파일은shell:*
및 "direct" 명령에 대한 ACL을 정의합니다.admin
역할이 있는 사용자만shell:edit
,shell:exec
,shell:new
,shell:java
명령을 실행할 수 있습니다. 기타shell:*
명령은 모든 사용자가 실행할 수 있습니다.
이러한 기본 ACL을 변경하고 추가 명령 범위를 위해 자체 ACL을 추가할 수 있습니다(예: Apache Karaf Cellar의 경우 etc/org.apache.karaf.command.acl.cluster.cfg
, etc/org.apache.karaf.command.acl.camel.cfg
from Apache Camel, …).
etc/system.properties
에서 karaf.secured.services
속성을 편집하여 명령 RBAC 지원을 미세 조정할 수 있습니다.
# # By default, only Karaf shell commands are secured, but additional services can be # secured by expanding this filter # karaf.secured.services = (&(osgi.command.scope=*)(osgi.command.function=*))
21.1.4.3. JMX
콘솔 명령과 마찬가지로 ACL(AccessLists)을 Cryostat 계층에 정의할 수 있습니다.
Cryostat ACL은 etc/jmx.acl<ObjectName>.cfg 구성 파일에 정의되어 있습니다.
여기서 < ObjectName
>은 object name입니다(예: org.apache.karaf.bundle
은 org.apache.karaf.bundle은 org.apache.karaf;type=Bundle
Cryostat).
etc/jmx.acl.cfg
는 가장 일반적인 구성 파일이며 특정 구성 파일이 없는 경우 사용됩니다. "global" ACL 정의가 포함되어 있습니다.
Cryostat ACL은 (inside a Cryostat)를 사용하여 액세스를 제어할 수 있습니다.
-
작업 이름 regex(예:
operation* = role
) -
작업 인수 값 regex (예:
operation(java.lang.String, int)[/([1-4])?[0-9]/,/.*/] = role
)
기본적으로 Apache Karaf는 다음 Cryostat ACL을 정의합니다.
-
etc/jmx.acl.org.apache.karaf.bundle.cfg
구성 파일은org.apache.karaf:type=bundle
에 대한 ACL을 정의합니다. 이 ACL은admin
역할이 있는 사용자만 시스템 번들에 대한setStartLevel()
,start()
,stop()
,update()
작업을 제한합니다. 다른 작업은manager
역할이 있는 사용자가 수행할 수 있습니다. -
etc/jmx.acl.org.apache.karaf.config.cfg
구성 파일은org.apache.karaf:type=config
Cryostat에 대한 ACL을 정의합니다. 이 ACL은admin
역할의 사용자만jmx.acl*
,org.apache.karaf.command.acl*
및org.apache.karaf.service.acl*
구성 PIDs의 변경을 제한합니다. 다른 작업은manager
역할이 있는 사용자가 수행할 수 있습니다. -
etc/jmx.acl.org.apache.karaf.security.jmx.cfg
구성 파일은org.apache.karaf:type=security,area=jmx
Cryostat에 대한 ACL을 정의합니다. 이 ACL은뷰어
역할이 있는 사용자에 대해canInvoke()
작업의 호출을 제한합니다. -
etc/jmx.acl.osgi.compendium.cm.cfg
구성 파일은osgi.compendium:type=cm
Cryostat에 대한 ACL을 정의합니다. 이 ACL은admin
역할의 사용자만jmx.acl*
,org.apache.karaf.command.acl*
및org.apache.karaf.service.acl*
구성 PIDs의 변경 사항을 제한합니다. 다른 작업은manager
역할이 있는 사용자가 수행할 수 있습니다. -
etc/jmx.acl.java.lang.Memory.cfg
구성 파일은 코어 JVM 메모리에 대한 ACL을 정의합니다. 이 ACL은manager
역할이 있는 사용자만gc
작업의 호출을 제한합니다. -
etc/jmx.acl.cfg
구성 파일은 가장 일반적인 파일입니다. 여기에 정의된 ACL은 다른 특정 ACL과 일치하지 않을 때 사용됩니다(특정 ACL에 의해 다른 특정etc/jmx.acl.*.cfg
구성 파일에 정의된 ACL임).list*()
,get*()
,is*()
작업은뷰어
역할의 사용자가 수행할 수 있습니다.set*()
및 기타 모든*()
작업은관리자
역할이 있는 사용자가 수행할 수 있습니다.
21.1.4.4. WebConsole
Apache Karaf WebConsole은 기본적으로 사용할 수 없습니다. 이를 활성화하려면 webconsole
기능을 설치해야 합니다.
karaf@root()> feature:install webconsole
WebConsole은 현재 콘솔 또는 Cryostat와 같은 세분화된 RBAC를 지원하지 않습니다.
admin
역할이 있는 모든 사용자는 WebConsole을 로그인하고 모든 작업을 수행할 수 있습니다.
21.1.5. SecurityMBean
Apache Karaf는 현재 사용자가 지정된 Cryostat 및/또는 작업을 호출할 수 있는지 확인하는 Cryostat를 제공합니다.
canInvoke()
작업은 현재 사용자의 역할을 가져오고, 역할 중 하나가 지정된 인수 값을 사용하여 및/또는 작업을 호출할 수 있는지 확인합니다.
21.1.5.1. 작업
-
현재 사용자가
objectName
,false
else를 사용하여 Cryostat를 호출할 수 있는 경우canInvoke(objectName)
가true
를 반환합니다. -
현재 사용자가
objectName
,false
를 사용하여 operationmethodName
을 호출할 수 있는 경우canInvoke(objectName, methodName)
가true
를 반환합니다. -
Can
Invoke(objectName,
는 현재 사용자가methodName
,argumentTypes
)objectName
,false
를 사용하여 argumentsTypes 배열을 사용하여 작업 methodName을 호출할 수 있는 경우true
를 반환합니다. -
canInvoke(bulkQuery)
는canInvoke
가true
또는false
인 경우bulkQuery
테이블 형식 데이터의 각 작업에 대해 포함하는 테이블 형식 데이터를 반환합니다.
21.1.6. 보안 공급자
일부 애플리케이션에서는 [BouncyCastle|http://www.bouncycastle.org]과 같은 특정 보안 공급자를 사용할 수 있어야 합니다.
JVM은 이러한 safety의 사용에 대해 몇 가지 제한 사항을 적용합니다. 서명하여 부팅 클래스 경로에서 사용할 수 있어야 합니다.
이러한 공급자를 배포하는 한 가지 방법은 $JAVA_HOME/jre/lib/ext
의 JRE 폴더에 배치하고 보안 정책 구성($JAVA_HOME/jre/lib/security/java.security
)을 수정하여 이러한 공급자를 등록하는 것입니다.
이 접근 방식은 잘 작동하지만 글로벌 효과가 있으며 모든 서버를 적절하게 구성해야 합니다.
Apache Karaf는 추가 보안 공급자를 구성하는 간단한 방법을 제공합니다. * 공급자를 lib/ext
*에 배치하고 etc/config.properties
구성 파일을 수정하여 다음 속성을 추가합니다.
org.apache.karaf.security.providers = xxx,yyy
이 속성의 값은 등록할 공급자 클래스 이름의 쉼표로 구분된 목록입니다.
예를 들어 bouncycastle 보안 공급자를 추가하려면 다음을 정의합니다.
org.apache.karaf.security.providers = org.bouncycastle.jce.provider.BouncyCastleProvider
또한 모든 번들이 해당 번들에 액세스할 수 있도록 시스템 번들에서 해당 공급자의 클래스에 대한 액세스를 제공할 수 있습니다.
동일한 구성 파일에서 org.osgi.framework.bootdelegation
속성을 수정하여 수행할 수 있습니다.
org.osgi.framework.bootdelegation = ...,org.bouncycastle*