콘텐츠로 이동
📣 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.

외부 비밀#

기능 사용 가능성

  • 외부 비밀은 엔터프라이즈 자체 호스팅 및 엔터프라이즈 클라우드 계획에서 사용할 수 있습니다.
  • n8n은 AWS Secrets Manager, Azure Key Vault, GCP Secrets Manager, Infisical 및 HashiCorp Vault를 지원합니다.
  • n8n은 HashiCorp Vault Secrets를 지원하지 않습니다.

n8n의 자격 증명을 관리하기 위해 외부 비밀 저장소를 사용할 수 있습니다.

n8n은 모든 자격 증명을 데이터베이스에 암호화하여 저장하고, 기본적으로 이들에 대한 접근을 제한합니다. 외부 비밀 기능을 사용하면 민감한 자격 증명 정보를 외부 금고에 저장하고, 필요할 때 n8n이 이를 로드하도록 할 수 있습니다. 이는 추가적인 보안 계층을 제공하고, 여러 n8n 환경에서 사용되는 자격 증명을 중앙에서 관리할 수 있게 해줍니다.

n8n을 비밀 저장소에 연결#

비밀 이름

비밀 이름에는 공백, 하이픈 또는 기타 특수 문자를 포함할 수 없습니다. n8n은 영숫자(a-z, A-Z, 0-9) 및 밑줄을 포함하는 비밀 이름을 지원합니다.

  1. n8n에서 설정 > 외부 비밀로 이동합니다.
  2. 저장소 공급자에 대해 설정을 선택합니다.
  3. 공급자의 자격 증명을 입력합니다:

    • Azure Key Vault: 금고 이름, 테넌트 ID, 클라이언트 ID, 클라이언트 비밀을 제공하십시오. Microsoft Entra ID 앱을 등록하고 서비스 주체를 만드는 방법에 대한 정보는 Azure 문서를 참조하십시오: Microsoft Entra ID 앱 등록 및 서비스 주체 만들기. n8n은 비밀에 대한 단일 라인 값만 지원합니다.
    • AWS Secrets Manager: 액세스 키 ID, 비밀 액세스 키, 리전을 제공합니다. IAM 사용자에게는 secretsmanager:ListSecrets, secretsmanager:BatchGetSecretValue, secretsmanager:GetSecretValue 권한이 있어야 합니다.

      n8n이 AWS Secrets Manager의 모든 비밀에 접근할 수 있도록 하려면, IAM 사용자에게 다음 정책을 연결할 수 있습니다:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      {
      	"Version": "2012-10-17",
      	"Statement": [
      		{
      			"Sid": "AccessAllSecrets",
      			"Effect": "Allow",
      			"Action": [
      				"secretsmanager:ListSecrets",
      				"secretsmanager:BatchGetSecretValue",
      				"secretsmanager:GetResourcePolicy",
      				"secretsmanager:GetSecretValue",
      				"secretsmanager:DescribeSecret",
      				"secretsmanager:ListSecretVersionIds"
      			],
      			"Resource": "*"
      		}
      	]
      }
      

      또한 n8n이 특정 AWS Secret Manager 비밀에 접근하도록 더 제한할 수도 있습니다. 모든 자원에 접근하기 위해서는 여전히 secretsmanager:ListSecretssecretsmanager:BatchGetSecretValue 권한을 허용해야 합니다. 이 권한들은 n8n이 ARN 범위의 비밀을 검색할 수 있게 하지만, 비밀 값에 대한 접근을 제공하지는 않습니다.

      다음으로, secretsmanager:GetSecretValue 권한의 범위를 n8n과 공유할 비밀의 특정 Amazon Resource Names (ARN)에 설정해야 합니다. 각 자원 ARN에 올바른 리전과 계정 ID를 사용하고 있는지 확인하십시오. ARN 세부정보는 AWS 대시보드의 비밀 탭에서 찾을 수 있습니다.

      예를 들어, 다음 IAM 정책은 특정 AWS 계정 및 리전에서 이름이 n8n으로 시작하는 비밀에 대한 접근만 허용합니다:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      {
      	"Version": "2012-10-17",
      	"Statement": [
      		{
      			"Sid": "ListingSecrets",
      			"Effect": "Allow",
      			"Action": [
      				"secretsmanager:ListSecrets",
      				"secretsmanager:BatchGetSecretValue"
      			],
      			"Resource": "*"
      		},
      		{
      			"Sid": "RetrievingSecrets",
      			"Effect": "Allow",
      			"Action": [
      				"secretsmanager:GetSecretValue",
      				"secretsmanager:DescribeSecret"
      			],
      			"Resource": [
      				"arn:aws:secretsmanager:us-west-2:123456789000:secret:n8n*"
      			]
      		}
      	]
      }
      

      더 많은 IAM 권한 정책 예시는 AWS 문서를 참조하십시오.

    • HashiCorp Vault: 금고 인스턴스에 대한 금고 URL을 제공하고, 인증 방법을 선택하십시오. 인증 세부정보를 입력하십시오. 선택적으로 네임스페이스를 제공할 수 있습니다.

    • Infisical: 서비스 토큰을 제공합니다. 토큰을 얻는 방법에 대한 정보는 Infisical의 서비스 토큰 문서를 참조하십시오. Infisical을 자체 호스팅하는 경우 사이트 URL을 입력합니다.

      Infisical 환경

      토큰을 생성할 때 올바른 Infisical 환경을 선택해야 합니다. n8n은 이 환경에서 비밀을 로드하고, 다른 Infisical 환경의 비밀에는 접근할 수 없습니다. n8n은 단일 환경에 접근할 수 있는 서비스 토큰만 지원합니다.

      Infisical 폴더

      n8n은 Infisical 폴더를 지원하지 않습니다.

    • Google Cloud Platform: 최소한 Secret Manager Secret AccessorSecret Manager Secret Viewer 역할을 가진 서비스 계정에 대한 서비스 계정 키(JSON)를 제공합니다. 더 많은 정보는 Google의 서비스 계정 문서를 참조하십시오.

  4. 구성 저장을 클릭합니다.

  5. 비활성화 / 활성화 토글을 사용하여 공급자를 활성화합니다.

n8n 자격 증명에서 비밀 사용하기#

n8n 자격 증명에서 스토어의 비밀을 사용하려면:

  1. 새 자격 증명을 생성하거나 기존 자격 증명을 엽니다.
  2. 비밀을 사용하려는 필드에서:
    1. 필드 위에 마우스를 올립니다.
    2. Expression을 선택합니다.
  3. 비밀을 사용하려는 필드에 비밀 이름을 참조하는 expression을 입력합니다:
    1
    {{ $secrets.<vault-name>.<secret-name> }}
    
    <vault-name>vault (HashiCorp의 경우) 또는 infisical 또는 awsSecretsManager입니다. <secret-name>을 귀하의 금고에 표시된 이름으로 교체합니다.

n8n 환경에서 외부 비밀 사용하기#

n8n의 소스 제어 및 환경 기능은 Git에 기반한 서로 다른 n8n 환경을 생성할 수 있습니다. 이 기능은 서로 다른 인스턴스에서 서로 다른 자격 증명을 사용하는 것을 지원하지 않습니다. 각 n8n 인스턴스를 서로 다른 금고 또는 프로젝트 환경에 연결하여 서로 다른 환경에 대해 서로 다른 자격 증명을 제공하기 위해 외부 비밀 금고를 사용할 수 있습니다.

예를 들어, 개발용과 프로덕션용으로 두 개의 n8n 인스턴스가 있습니다. 금고로 Infisical을 사용합니다. Infisical에서 개발 및 프로덕션이라는 두 개의 환경이 있는 프로젝트를 생성합니다. 각 Infisical 환경에 대한 토큰을 생성합니다. 개발 환경을 위한 토큰을 사용하여 개발 n8n 인스턴스에 연결하고, 프로덕션 환경을 위한 토큰을 사용하여 프로덕션 n8n 인스턴스에 연결합니다.

프로젝트에서 외부 비밀 사용하기#

RBAC 프로젝트에서 외부 비밀을 사용하려면 프로젝트의 구성원으로 인스턴스 소유자 또는 인스턴스 관리자가 있어야 합니다.

문제 해결#

Infisical 버전 변경#

Infisical 버전 업그레이드는 n8n에 연결하는 데 문제를 일으킬 수 있습니다. Infisical 연결이 작동하지 않는 경우 최근 버전 변경이 있었는지 확인하십시오. 그렇다면 help@n8n.io에 문제를 보고하십시오.

인스턴스 소유자 또는 관리자가 소유한 자격 증명에서만 외부 비밀 설정#

인스턴스 소유자와 관리자가 가진 권한으로 인해 소유자와 관리자는 비밀 표현으로 다른 사용자가 소유한 자격 증명을 업데이트할 수 있습니다. 이는 인스턴스 소유자 또는 관리자가 미리 보기에선 작동하는 것처럼 보이지만, 프로덕션에서 워크플로가 실행될 때 비밀이 해결되지 않습니다.

외부 비밀은 인스턴스 관리자 또는 소유자가 소유한 자격 증명에만 사용하십시오. 이는 프로덕션에서 올바르게 해결되도록 보장합니다.

인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!