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