최종 사용자 자격증명

최종 사용자 자격증명 (End-user Credentials)

출처: 공식문서

각 사용자가 자기 계정을 하나의 자격증명에 연결하게 해서, 워크플로가 그 워크플로를 트리거한 사람의 자격증명으로 실행되게 하는 방식이에요.

왜 필요한가

최종 사용자 자격증명(End-user credentials)은 고정 자격증명(fixed credential) 대신, 워크플로를 트리거한 사람의 자격증명으로 실행되게 해줘요. 프로젝트 관리자가 자격증명 하나를 템플릿으로 만들고, 각 사용자가 자기 계정을 연결해요. n8n은 각 사용자의 연결된 계정을 사용하고 그들의 데이터를 비공개로 유지해요.

고정 자격증명은 워크플로를 실행하는 모든 사람이 같은 계정을 써서, 한 사람의 접근 권한과 데이터가 다른 사람들에게 노출될 수 있어요. 최종 사용자 자격증명은 각 사용자에게 자기 자신의 연결을 주고 실행 데이터를 격리해요.

기능 제공 범위

  • n8n Cloud: Enterprise
  • 셀프호스팅: Enterprise

최종 사용자 자격증명은 Preview(프리뷰) 상태이며 향후 릴리스에서 바뀔 수 있어요. 운영 워크플로에 맹신하지 마세요.

최종 사용자 자격증명이란

자격증명을 만들거나 수정할 때 Credential type을 선택해요.

  • Fixed credential (고정 자격증명): 누가 워크플로를 실행하든 같은 자격증명을 사용해요. 기본값이에요.
  • End-user credential (최종 사용자 자격증명): 실행 시점에 각 사용자의 자격증명을 사용해요. 그 사용자만 자기 자격증명을 보고 쓸 수 있어요.

최종 사용자 자격증명은 템플릿이에요. 만든 사람이 연결을 한 번 구성해요(예: Gmail용 OAuth 앱 세부 정보). 접근 권한이 있는 모든 사용자는 그 템플릿으로 자기 계정을 연결해요. 각 연결은 그것을 만든 사용자 소유라서, 그 사용자만 사용할 수 있고 그 사용자만 반환되는 데이터를 볼 수 있어요.

예시

수동 트리거로 Gmail의 메시지를 읽어 Slack에 요약을 보내는 워크플로를 만든다고 생각해 볼게요. Gmail용 최종 사용자 자격증명을 템플릿으로 만들어요. 사용자 A가 워크플로를 실행하면 n8n은 A의 받은 편지함을 읽어요. 사용자 B가 실행하면 B의 받은 편지함을 읽어요. 각 사용자는 자기 데이터만 볼 수 있어요.

동작 방식

노드에서 자격증명은 항상 그래왔듯 자격증명 드롭다운으로 선택해요. 노드에 별도 설정이 있는 게 아니에요. 노드 동작은 자격증명 타입에 따라 달라져요.

  • 고정 자격증명이면 노드는 기존처럼 동작해요.
  • 최종 사용자 자격증명이면 노드는 트리거한 사용자의 계정을 쓴다고 표시하고, 아직 연결하지 않았다면 연결하라고 안내해요.

실행 시점에 n8n은 자격증명을 워크플로를 트리거한 사용자의 연결된 계정으로 해석해요. 워크플로 접근 권한이 있는 모든 사용자는 자기 신분의 관점에서 노드를 보게 돼요. 연결했다면 그 연결이 실행되고, 연결하지 않았다면 트리거 전에 연결해야 해요.

한 워크플로 안에서 고정 자격증명과 최종 사용자 자격증명을 섞을 수 있어요. 예를 들어 각 사용자의 개인 Google Calendar를 최종 사용자 자격증명으로 읽되, 결과는 팀 공용 Slack 계정(고정 자격증명)으로 보내는 식이에요.

요구사항과 제한

  • Enterprise 전용: 최종 사용자 자격증명은 Enterprise 플랜이 필요해요.
  • 생성 제어: 기본적으로 프로젝트 관리자만 최종 사용자 자격증명을 만들 수 있어요. 이 권한을 커스텀 역할로 다른 사용자에게 부여할 수 있어요. 만들 수 있는 사람을 제한하면 자격증명 관리가 중앙화돼요. 관리자가 템플릿을 한 번 만들고 필요한 프로젝트에 공유하는 방식이죠.
  • 팀 프로젝트 전용: 최종 사용자 자격증명은 팀 프로젝트에서만 만들 수 있고 개인 프로젝트에서는 만들 수 없어요. 중앙 관리를 위해 관리자가 템플릿을 만들고, 개별 사용자가 개인 프로젝트에서 각자 만드는 걸 막는 거예요.
  • OAuth 전용: 최종 사용자 자격증명은 OAuth 기반 자격증명 타입만 지원해요.
  • 사용자당 연결 1개: 각 사용자는 최종 사용자 자격증명 템플릿 하나에 계정 하나만 연결할 수 있어요.
  • 지원 트리거: 최종 사용자 자격증명 해석은 수동 트리거, Chat Hub, MCP Server Trigger, n8n Form Trigger, 그리고 Hosted Chat 전용의 Chat Trigger에서 동작해요(Embedded Chat/webhook 모드 제외). Form Trigger와 Chat Trigger가 n8n User Auth 인증을 사용할 때 최종 사용자 자격증명을 해석해서, 각 사용자가 자기 연결된 계정으로 워크플로를 실행해요.

최종 사용자 자격증명 만들기

  1. 자격증명을 만들거나 기존 것을 열어요.
  2. Credential type에서 End-user credential을 선택해요.
  3. 연결을 구성해요. OAuth 자격증명이라면 서비스에 등록하기 위해 Client ID, Client Secret, OAuth Redirect URL을 포함해요.
  4. Save를 눌러요.

이제 사용자가 이 자격증명에 자기 계정을 연결할 수 있어요. 이 자격증명을 쓰는 워크플로를 사용자가 실행하면, 아직 연결하지 않았다면 n8n이 연결을 안내해요. 프로젝트 접근 권한이 있는 사용자는 캔버스에서 노드를 열거나 프로젝트의 Credentials 목록에서 미리 연결할 수도 있어요.

일부 트리거 노드(MCP Server Trigger, Chat Trigger, Form Trigger 등)는 트리거한 사용자에게 트리거 실행 권한을 요구하도록 설정할 수 있어요. 이걸 켜면 워크플로 실행을 허용하는 프로젝트 역할을 가진 사용자만 트리거할 수 있어요. 그 역할이 없는 사용자는 계정을 연결할 수 없어요.

내 계정 연결하기

워크플로에서 최종 사용자 자격증명을 쓰기 전에 템플릿에 계정을 연결해야 해요. 다음 위치에서 할 수 있어요.

  • 노드에서: 최종 사용자 자격증명을 쓰는 노드를 열면 내가 계정을 연결했는지 보여줘요. 연결하지 않았다면 Connect를 선택해요.
  • 자격증명에서: 최종 사용자 자격증명을 열고 자격증명 모달에서 계정을 연결해요.
  • 자격증명 목록에서: 프로젝트의 Credentials 목록에서 최종 사용자 자격증명 카드에 Connect 옵션이 있어요.

내 계정의 OAuth 흐름을 완료해요. 연결되면 노드가 Connected as [email protected] 같은 형태로 계정을 보여줘요.

내 연결은 비공개예요. 다른 사용자는 같은 템플릿에 자기 계정을 연결하며, 내 계정을 쓰지 않아요.

실행 데이터와 프라이버시

워크플로 실행이 최종 사용자 자격증명을 사용하면, 실행 메타데이터는 그 워크플로의 실행에 접근 권한이 있는 누구에게나 보여요. 상태, 실행 시각, 최종 사용자 자격증명을 사용했다는 사실 같은 것들이요. 바뀌는 것은 안쪽 데이터를 누가 보는가예요.

연결된 계정으로 워크플로를 트리거한 사용자 본인만 그 노드들의 입력·출력 데이터(연결된 서비스에서 반환된 데이터 포함)를 볼 수 있어요. 그 외 모든 사람(인스턴스 관리자 포함)은 그 노드들이 삭제된(redacted) 출력으로 보여요.

관리자 가시성

관리자는 최종 사용자 자격증명 템플릿이 존재하고 거기에 연결이 붙어 있다는 걸 볼 수 있어요. 예를 들어 최종 사용자 자격증명을 삭제할 때 관리자는 몇 개의 사용자 연결이 붙어 있는지 개수만 볼 수 있어요. 그 개수만 볼 뿐이에요. 관리자는 다음을 할 수 없어요.

  • 개별 연결에 대한 어떤 정보도 보기
  • 연결의 시크릿 보기
  • 자기 워크플로에서 아무 사용자의 연결된 계정 사용하기
  • 다른 사용자의 연결에서 실행된 실행의 삭제된 출력 보기

공유는 다른 자격증명과 똑같이 동작하되, 템플릿만 공유되고 연결된 계정은 공유되지 않아요. 관리자가 다른 프로젝트나 사용자에게 공유하면 각 수신자가 자기 계정을 연결해요.

⚠️ 최종 사용자 자격증명을 삭제하면 모든 연결이 제거돼요

자격증명 템플릿을 삭제하면 자격증명 전체(모든 사용자의 연결 포함)가 삭제돼요. 내 것만 삭제되는 게 아니에요. 그 자격증명에 의존하는 워크플로는 자격증명을 다시 설정하고 다시 연결하기 전까지 해당 사용자에게 실행이 해석되지 않아요. n8n은 연결이 붙어 있는 최종 사용자 자격증명을 삭제하기 전에 경고해요.

프로젝트 간 최종 사용자 자격증명 공유

표준 자격증명 공유 메커니즘으로 최종 사용자 자격증명을 다른 프로젝트로 공유해요. 공유되는 것은 템플릿이지 연결이 아니에요. 다른 프로젝트의 사용자는 자기 계정을 연결하는 옵션을 보게 되고, 원래 소유자의 연결을 받지는 않아요.

각 사용자는 템플릿 하나에 한 번만 연결해요. 그 단일 연결은 템플릿이 공유된 모든 프로젝트에서 그 사용자에게 해석되므로, 프로젝트마다 다시 연결할 필요가 없어요.

좋은 관행은 최종 사용자 자격증명(예: Gmail, Linear, Jira, Google Sheets)을 단일 프로젝트에서 만든 뒤, 필요한 다른 프로젝트에 공유하는 거예요. 각 프로젝트가 같은 템플릿을 받고, 각 사용자의 연결 하나가 모두에서 동작해요.

더 알아보기 (Learn more)