intermediate - ros2 security

Overview

ROS 2는 ROS 2 계산 그래프 안의 노드 간 통신을 보호할 수 있다. 디스커버리처럼 미들웨어를 통해 동작하며(해당 보안 플러그인을 지원하는 경우), 추가 소프트웨어 설치 없이 설정만으로 활성화할 수 있다. 대신 그래프 참여자마다 설정 파일이 필요하다. 이 파일들로 암호화·인증을 켜고, 노드 단위·전체 그래프 정책을 정의한다. 보안 동작을 켜고 끄는 마스터 온/오프 스위치도 있다.

신뢰 기준(trust anchor)은 ROS 유틸로 만들거나 외부 인증 기관(CA) 를 쓸 수 있다. 제공되는 기능: 통신 암호화, 참여자 인증, 데이터 무결성, 도메인 전체 접근 제어.

보안 서비스는 노드 간 통신에 쓰이는 DDS(Data Distribution Service) 가 제공한다. DDS Security 사양에 따라 보안 플러그인이 포함되며, ROS는 이 플러그인을 이용해 정책 기반 암호화·인증·접근 제어를 한다. 설정 파일과 환경 변수로 활성화한다.

The Security Enclave (보안 엔클레이브)

Security Enclave는 ROS 통신을 보호하기 위한 단일 정책을 담는 단위다. 한 엔클레이브가 여러 노드, 전체 ROS 그래프, 또는 보호할 프로세스·기기의 조합에 정책을 적용할 수 있다. 배포 시 프로세스·사용자·기기에 유연하게 매핑할 수 있다. 자세한 설계는 ROS 2 Security Enclaves 문서 참고.

Security Files (보안 파일)

DDS 사양에 따라 한 엔클레이브는 6개 파일로 정의된다. 3개는 엔클레이브 신원(identity), 3개는 권한(permissions) 이다. 6개 모두 한 디렉터리에 두고, 엔클레이브 경로를 지정하지 않고 띄운 노드는 기본 루트 엔클레이브의 파일을 사용한다.

Enclave Identity (신원)

파일역할
identity_ca.cert.pem참여자 식별용 신뢰 기준(Trust Anchor).
cert.pem이 엔클레이브의 고유 인증서. Identity CA로 서명됨.
key.pem위 인증서에 대응하는 비밀키. 공유하지 않고, 복호화·서명에만 사용.

참여자가 cert.pem을 제시하면, 다른 참여자는 자신이 가진 Identity CA로 신원을 검증할 수 있다. 이렇게 신뢰된 통신이 수립된다.

Enclave Permissions (권한)

파일역할
permissions_ca.cert.pem권한 부여용 신뢰 기준.
governance.p7s도메인 전체 보호 정책이 담긴 서명된 XML. Permissions CA로 서명.
permissions.p7s이 엔클레이브의 권한이 담긴 서명된 XML. Permissions CA로 서명.

도메인 참여자는 Permissions CA 사본으로 이 서명된 파일들을 검증해 요청된 접근을 허용한다. 실무에서는 동일한 인증서가 Identity CA와 Permissions CA 둘 다로 쓰이는 경우가 많다.

Private Keys (비밀키)

Identity·Permissions 인증서에는 각각 비밀키가 있다. 새 엔클레이브를 추가할 때: Identity CA 비밀키로 CSR(Certificate Signing Request)에 서명하고, Permissions CA 비밀키로 권한 XML에 서명해 권한을 부여한다.

Security Environment Variables (환경 변수)

변수설명
ROS_SECURITY_ENABLE보안 기능 온/오프. 기본값은 꺼짐. 켜려면 true(대소문자 구분).
ROS_SECURITY_STRATEGY보안이 켜진 뒤, 설정이 잘못된 참여자를 어떻게 할지. 기본은 설정 오류여도 기동은 허용(보안만 비활성). 엄격히 맞추려면 Enforce로 설정해, 비준수 엔클레이브는 기동 실패하게 할 수 있다.

그 외 엔클레이브·보안 파일 경로 관련 변수는 ROS 2 DDS-Security Integration 설계 문서 참고.

Learn More

실습: Setting up security.


참고: ROS 2 Security — ROS 2 Jazzy