Notice
Recent Posts
Recent Comments
Link
반응형
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

인공지능 요모조모

[ROS2] ROS2 Security 본문

ROKEY/ROS2

[ROS2] ROS2 Security

dvl.hyeon_ 2025. 5. 2. 00:25
반응형

🔐 ROS2 보안(Security) 설정 - SROS2 사용법

ROS2에서는 SROS2 패키지를 통해 DDS-Security 기능 제공
노드 간 통신에 인증 및 암호화를 적용하여 안전한 메시지 송수신 환경을 구성 가능


🔧 1. 보안 키 저장소 생성

먼저 보안 키를 저장할 디렉토리를 만들고, keystore를 생성

$ mkdir ~/sros2_demo
$ cd ~/sros2_demo
$ ros2 security create_keystore demo_keystore

🔐 2. 보안 enclave 생성 (노드별 인증 키 생성)

각 노드별로 사용할 enclave를 생성

$ ros2 security create_enclave demo_keystore /talker_listener/talker
$ ros2 security create_enclave demo_keystore /talker_listener/listener


⚙️ 3. 환경변수 설정

보안을 적용하려면 아래 환경변수를 터미널에 선언
노드 실행할 때마다 각 터미널에서 매번 선언 필요

export ROS_SECURITY_KEYSTORE=~/sros2_demo/demo_keystore
export ROS_SECURITY_ENABLE=true
export ROS_SECURITY_STRATEGY=Enforce
환경변수 설명
ROS_SECURITY_KEYSTORE 보안 인증서와 키 파일이 저장된 폴더 경로
ROS_SECURITY_ENABLE 보안 기능 활성화 여부 (기본값: false)
ROS_SECURITY_STRATEGY 보안 적용 전략
- Enforce: 인증되지 않은 노드는 통신 불가
- Permissive: 인증 없는 노드도 허용

 

💡 Tip
매번 입력하지 않으려면 ~/.bashrc에 위의 변수 설정 추가


🚀 4. 노드 실행

보안 설정이 적용된 노드를 실행할 땐, enclave를 명시 필수

$ ros2 run demo_nodes_cpp talker --ros-args --enclave /talker_listener/talker
$ ros2 run demo_nodes_py listener --ros-args --enclave /talker_listener/listener

 

인증 및 암호화 통신 적용됨


❌ 보안 없이 실행 (비교용)

$ ros2 run demo_nodes_cpp talker
$ ros2 run demo_nodes_py listener

 

인증 및 암호화 없이 평문 통신


🔄 비교 테스트

두 쌍의 talker/listener 노드를 동시에 실행하면
보안 설정된 노드 간에는 암호화 통신,
보안 미설정 노드 간에는 평문 통신이 이뤄지는 것을 확인 가능

반응형

'ROKEY > ROS2' 카테고리의 다른 글

[ROS2] ROS2 CLI  (0) 2025.05.02
[ROS2] ROS2 Lifecycle  (0) 2025.05.01
[ROS2] 기초 개념(2)  (0) 2025.04.23
[ROS2] 기초 개념 (1)  (0) 2025.04.23
[ROS2] BAG  (0) 2025.04.22