수수께끼연구소

AI 에이전트에 GitHub 권한을 줄 때: OAuth 동의 설계 5가지

수수께끼 고양이 2026. 9. 15. 15:07
728x90
반응형
반응형

AI 에이전트가 문서를 요약하는 단계를 넘어 GitHub Issue를 만들거나 Slack 메시지를 보내면 인증 문제는 더 중요해집니다. 에이전트가 사용할 토큰은 누구의 동의로 발급됐는지, 어떤 서비스와 작업에 쓸 수 있는지, 언제 다시 승인을 받아야 하는지가 분명해야 합니다.

2026년 9월 14일 AWS는 Amazon Bedrock AgentCore Gateway용 관리형 Consent portal을 소개했습니다. 특정 서비스의 설정 방법보다 주목할 점은 사용자 동의와 토큰을 안전하게 연결하는 OAuth 운영 원칙입니다.

3줄 핵심 요약
  • AI 에이전트가 외부 서비스를 대신 조작하려면 사용자 인증과 요청 권한에 대한 명시적 동의가 먼저 필요합니다.
  • 세션 바인딩은 권한을 승인한 사용자와 해당 토큰을 사용할 에이전트 세션이 같은지 연결하는 핵심 절차입니다.
  • 연결 편의성보다 서비스별 최소 권한, 독립적인 해제, 감사 로그와 재인증 기준을 우선 설계해야 합니다.

인증과 권한 위임을 구분하기

조직의 로그인은 사용자가 누구인지 확인하고, OAuth 동의는 외부 서비스에서 무엇을 할 수 있는지 허용합니다. 두 절차를 섞으면 회사 계정으로 로그인했다는 이유만으로 에이전트가 GitHub나 Slack에 접근하는 위험한 구조가 될 수 있습니다.

사용자는 먼저 조직의 IdP로 인증한 뒤 각 외부 서비스가 요청하는 권한 범위를 따로 확인해야 합니다. 에이전트는 동의가 완료되지 않은 도구를 호출하지 않고 승인 화면으로 안내해야 합니다.

세션 바인딩으로 토큰의 주인을 확인하기

OAuth 승인 뒤에는 돌아온 인증 코드를 처음 요청한 사용자 세션과 연결해야 합니다. 이를 세션 바인딩이라고 하며 다른 브라우저나 공격자의 세션에 토큰이 잘못 묶이는 일을 막는 핵심 절차입니다.

AWS의 관리형 포털은 사용자의 인증 문맥을 이용해 CompleteResourceTokenAuth 흐름을 마무리하고 결과 토큰을 사용자별로 보관합니다. 자체 구현에서도 콜백을 받았다는 사실만 믿지 말고 사용자 신원과 요청 상태를 함께 검증해야 합니다.

서비스별 동의와 최소 범위 적용하기

한 에이전트가 GitHub와 Slack을 모두 사용하더라도 두 서비스의 동의를 하나로 묶을 필요는 없습니다. 사용자는 필요한 연결만 승인하고 나머지는 연결하지 않은 상태로 둘 수 있어야 합니다.

저장소 읽기만 필요한 도구에 쓰기 권한을 요청하거나 공개 채널 조회 기능에 관리자 권한을 부여하면 피해 범위가 커집니다. 도구마다 필요한 OAuth 범위를 문서화하고 새로운 기능이 추가될 때만 별도로 권한 확대를 요청하는 편이 안전합니다.

콜백 URL 세 종류를 혼동하지 않기

관리형 동의 흐름에는 조직 IdP가 사용자를 돌려보내는 URL, 포털이 세션 바인딩을 완료하는 URL, GitHub나 Slack이 인증 코드를 보내는 공급자별 URL이 존재할 수 있습니다. 역할이 다른 주소를 서로 바꾸면 로그인이 반복되거나 토큰이 잘못된 흐름으로 전달될 수 있습니다.

운영 환경에서는 허용한 HTTPS 주소를 정확히 등록하고 임시 주소와 개발용 콜백을 제거해야 합니다. 주소 변경은 코드 배포와 별개로 인증 제공자 설정까지 함께 검토해야 합니다.

해제, 만료와 감사 기록까지 운영하기

동의는 한 번 받고 끝나는 설정이 아닙니다. 사용자가 연결을 해제하거나 공급자가 토큰을 취소했을 때 에이전트는 조용히 실패하지 말고 재인증이 필요하다고 알려야 합니다.

유효한 갱신 토큰이 없거나 만료된 경우에는 다시 동의를 받아야 하며 비밀번호 입력을 자동화해서는 안 됩니다. AWS는 동의 시작, 세션 바인딩 완료와 게이트웨이 접근 활동을 CloudTrail에서 확인할 수 있다고 설명합니다.

민감한 토큰 값은 로그에 남기지 않으면서 사용자, 서비스, 요청 범위와 시각은 추적할 수 있어야 합니다.

사용자와 업계에 미치는 영향

관리형 동의 포털은 팀이 직접 만들어야 했던 공개 콜백, 브라우저 세션과 사용자 연결 로직을 줄일 수 있습니다. IDE나 MCP 클라이언트에서 에이전트를 사용하는 개발자는 필요한 서비스를 미리 연결하고 이후 같은 사용자 토큰을 재사용할 수 있습니다.

보안팀은 사용자별 동의와 도구 호출을 감사 기록으로 연결해 누가 어떤 권한을 승인했는지 확인하기 쉬워집니다. 제품에 상관없이 이 구조를 적용하면 에이전트 기능을 늘리면서도 계정 전체를 공유하는 방식보다 권한 경계를 명확하게 유지할 수 있습니다.

확인할 점

관리형 포털을 사용해도 OAuth 앱 등록, 조직 IdP, IAM 실행 역할, 외부 서비스의 비밀값과 콜백 URL은 관리자가 올바르게 구성해야 합니다. 토큰 보관소가 있다고 해서 과도한 OAuth 범위나 넓은 IAM 권한이 안전해지는 것은 아닙니다.

외부 공급자가 갱신 토큰을 발급하지 않거나 토큰이 만료·취소되면 사용자의 재동의가 필요할 수 있습니다. 기능과 지원 리전은 변경될 수 있으므로 도입 시점의 공식 문서, 요금과 조직의 개인정보·감사 정책을 다시 확인해야 합니다.

출처

728x90

 

728x90
반응형