화면에서 보이는 것과 실행할 수 있는 것은 다르다
관제에서 r1의 위치를 볼 수 있다고 r1을 움직일 권한까지 있다는 뜻은 아니다. 운영 UI는 관측을 읽는 경로와 변경을 요청하는 경로를 구분해야 한다. 지도에서 선택한 로봇이 바뀌었는데 확인창에는 이전 로봇 이름이 남아 있다면, 버튼을 한 번 더 누르는 것으로 정확한 확인이 되지 않는다.
M34.01은 현재/마지막 관측을, M34.02는 장면의 좌표·시간·개정 정합을 다뤘다. 이제 그 관측을 근거로 누가 무엇을 요청했고 어떤 범위가 승인됐으며 실제로 무엇이 확인됐는지를 나눈다. 이 단원의 UI는 설계 대상이며 제공 표는 합성 자료다. 이 페이지에서 실제 로봇을 조작하는 기능은 없다.
권한 검사는 신뢰된 실행 경로에 둔다
인증은 주체가 누구인지 확인하는 일이고, 권한 판정은 그 주체가 특정 대상에 특정 동작을 할 수 있는지 확인하는 일이다. 버튼을 숨기거나 비활성화하는 것은 사용자 안내에 도움이 되지만 서버의 권한 검사를 대신하지 못한다. UI를 우회한 요청도 같은 판정을 받아야 한다.
OWASP Authorization 지침은 최소 권한·기본 거부와 매 요청 권한 확인을 설명한다. 이 수업에서는 이를 대상/동작/범위/기한 검사로 구체화한다. 역할 이름 하나만 보고 허가하지 않고 해당 로봇·과업·세대와 현재 조건까지 확인한다. 실제 인증·권한 서비스나 안전 인증을 구현했다는 뜻은 아니다.
| 주체/요청 | 화면/서버가 구분할 것 |
|---|---|
| viewer의 상태 읽기 | 허용된 관측 범위만 제공, 변경 권한 자동 부여 안 함 |
| operator의 r1 이동 요청 | r1·동작/거리/속도·세대/장면·기한·현재 관측 조건 검사 |
| 같은 operator의 r2 요청 | r1 허가를 r2로 확대하지 않음 |
| AI가 만든 이동 초안 | 제안 자료이며 권한/사용자 확인/실행 결과가 아님 |
‘확인했습니다’라는 UI 상태는 사용자 확인의 기록이다. 신뢰된 서버의 허가 판정, 로봇의 실행 수락, 실제 물리 결과는 별도로 필요하다. M22.06의 감독과 M30.04의 미상/중단 조건을 유지한다.
확인은 정확한 요청 내용에 묶는다
가상 요청 q17은 대상 r1/bootA, map-v7/model-v3에서 전진거리0.5m·속도상한0.1m/s라는 초안이다. q17은 교육용 식별자이며 암호학적 내용 지문이 아니다. 실제 계약은 요청ID와 정확한 정규화 내용/개정의 대응, 변경 감지와 확인의 연결을 정의해야 한다.
최종 확인 화면은 대상/과업·동작과 한계·관측의 시각/유효성·지도/모델 개정·권한 만료·예상 영향과 취소의 한계를 보여 준다. 내용을 바꾸면 확인도 다시 받아야 한다. 거리0.5m를1.0m로 바꾸거나 r2·새 지도 개정을 선택했는데 이전 q17의 확인 표시를 그대로 쓰지 않는다. 재확인해도 범위 밖 요청이 자동 허가되는 것은 아니다.
UI는 확인 직후의 상태만 신뢰하지 않는다. 확인과 실제 admission 사이에 권한이 만료되거나 관측/장면이 달라질 수 있다. admission은 명령을 실행 경로에 새로 받아들이는 판정이다. 그 시점에 신뢰된 서버가 현재 권한과 정확한 요청·상태 조건을 다시 검사한다.
나이 경계와 요청 만료 경계를 따로 계산한다
합성 시계는 ClockA이며 근거 관측은1000ms, 표시용 관측 TTL은200ms를 포함한다. q17의 권한/확인은1100ms부터1200ms 전까지 유효하다. 구간 표기 [1100,1200)은 시작을 포함하고 끝을 제외한다. 다음 표는 권한 범위와 장면·현재 상태가 모두 맞다는 가정이다. 실제 전진을 실행하는 표가 아니다.
| admission 시각 | 관측 나이/신선도 | 요청 권한/확인 | 새 요청 판정 |
|---|---|---|---|
| 1110ms | 110ms, 유효 | 유효 | 나머지 조건 충족 시 허용 가능 |
| 1199ms | 199ms, 유효 | 유효 | 나머지 조건 충족 시 허용 가능 |
| 1200ms | 200ms, 경계 포함 유효 | 만료 | 거부, 관측 통과만으로 허가 못 함 |
| 1201ms | 201ms, 만료 | 만료 | 거부, 두 실패를 별도로 기록 |
따라서1200ms에는 관측이200ms로 유효해도 요청 권한이 만료돼 admission을 거부한다. 모든 관문을 함께 만족해야 한다. 이200/1200ms는 교육용 계약이며 실제 장비의 제어·안전 기준으로 쓰지 않는다. 요청 만료는 새 admission을 막는 조건이며 이미 수행 중인 동작이 물리적으로 정지했다는 뜻도 아니다.
재전송할 때 새 물리 동작을 만들지 않게 한다
응답이 끊겼다면 서버가 요청을 받지 못했을 수도 있고 처리했는데 응답만 잃었을 수도 있다. 타임아웃을 곧바로 실패/미실행이라고 보고 새 요청ID로 반복하면 같은 동작이 두 번 수행될 수 있다. 화면은 ‘응답 미확인’을 표시하고 기존 요청의 상태를 조회/대조하는 경로를 제공한다.
멱등성 키(idempotency key)는 같은 논리 요청의 재시도를 연결하기 위한 키다. 이번 계약에서 같은 주체·대상 범위의 q17/key17·동일 내용 재전송은 기존 처리 기록에 연결하고 새 실행 효과를 만들지 않는다. 동일 키인데 거리/대상 등 내용이 다르면 충돌로 거부한다. 단순히 같은 키라는 이유로 바뀐 내용을 새로 실행하지 않는다.
이 규칙은 서버의 저장/동시성·보존 기간·실행기와의 연계가 필요한 설계다. 클라이언트의 버튼 연타 방지만으로 네트워크 전체의 정확히 한 번 실행을 증명하지 않는다. 보존 범위 밖이거나 재시작 후 처리 기록이 없으면 자동 재실행 대신 미확인으로 두고 요청/실제 상태를 복구 절차로 확인한다. 현재 자료는 그 구현을 제공하는 것이 아니라 요청표의 판정을 연습한다.
취소 수락·종료 결과·실제 정지를 나눈다
취소 요청 c17은 원 요청 q17 또는 실행 goal의 정확한 ID에 연결한다. ‘전체 취소’와 ‘이 요청 취소’를 같은 동작으로 취급하지 않는다. 취소를 누른 뒤 버튼을 지웠다고 실행 결과를 CANCELED나 물리 정지로 바꾸지 않는다.
ROS2 Jazzy CancelGoal 정의에서 오류 없는 취소 수락은 해당 goal들이 CANCELING으로 전환됐음을 나타낸다. 이는 취소 완료나 실제 정지의 관측과 다르다. 이 단원에서도 요청/수락·진행·최종 결과·물리 관측을 다른 열로 추적한다.
| 합성 기록 | 말할 수 있는 것 | 아직 확인할 것 |
|---|---|---|
| q17 ACCEPTED | 실행기가 요청을 수락 | 진행/종료·물리 성과 |
| c17 ACCEPTED, goal CANCELING | 취소 처리가 수락/진행 중 | 최종 상태·실제 정지 |
| q17 CANCELED | 해당 실행의 소프트웨어 종료 결과 | 실제 속도/물체/잔여 동작·관측 시각 |
| r1 속도 관측 만료/누락 | 현재 속도 미확인 | 신선한 관측과 별도 감독/현장 절차 |
UI/통신 장애로 물리 정지가 확인되지 않으면 감독 상태는 미상이며 자동 재개하지 않는다. 네트워크 취소 버튼은 독립된 물리 정지 수단과 같은 보장을 하지 않는다. 이미 일어난 동작이나 이동한 물체는 소프트웨어 취소/코드 롤백만으로 원상복구되지 않는다. 실제 설비의 정지/재개는 그 장비의 검증된 감독 절차가 필요하며 여기서는 실행하지 않는다.
감사 기록은 결정과 관측의 연결을 보존한다
OWASP Logging 지침은 사건의 시각·장소·주체·내용과 연결 식별자를 다룬다. 관제에는 요청ID/내용 개정, 주체·대상/세대·과업, 지도/모델 개정, 권한 판정과 이유, 확인 내용/시각, admission/실행ID, 취소ID·최종 결과, 별도 관측 출처/시각을 연결해 남긴다. 원발생/수집/표시 시각도 구분한다.
이력에 거부·만료·중복·내용 충돌·권한 변경과 수집 실패도 남겨야 한다. 성공한 버튼 클릭만 기록하면 왜 다음 상태가 되었는지 재구성하기 어렵다. 감사 기록의 접근 권한·변경 방지·보존/수집 상태도 별도 설계 대상이다. 원토큰·비밀번호·불필요한 개인정보를 기록에 복사하지 않는다.
로그에 ACCEPTED가 있다는 사실만으로 물리 성과가 검증되지는 않는다. 반대로 로그가 없다는 이유만으로 실행이 없었다고 단정해서도 안 된다. 수집 누락 가능성과 요청·실제 관측을 함께 확인한다. 학습 답안에도 ‘확인된 단계/시각/출처’와 ‘아직 미확인’을 나누어 적는다.
기존 6.6 평가 설계의 실행 근거에 이 연결을 더한다. 이후 P4에서는 정책/트윈/관제 기록을 조건과 실패 분모에 연결하고, M32.01 등 캡스톤에서는 선택 과제의 재현·판정 근거를 구성한다. 화면상의 허가만으로 실물 전이 성과를 대신하지 않는다.