n8n
Automation
Security
Credentials
Best Practices

n8n Credentials Management: จัดการรหัสผ่านและ API Keys อย่างปลอดภัย

เรียนรู้วิธีจัดการ Credentials ใน n8n อย่างถูกต้อง ตั้งแต่การสร้าง ใช้งาน และรักษาความปลอดภัยของ API Keys และรหัสผ่าน

AI Unlocked Team
16/01/2568
n8n Credentials Management: จัดการรหัสผ่านและ API Keys อย่างปลอดภัย

n8n Credentials Management: จัดการรหัสผ่านและ API Keys อย่างปลอดภัย

การจัดการ Credentials อย่างถูกต้องเป็นเรื่องสำคัญมากสำหรับความปลอดภัยของระบบ automation บทความนี้จะสอนวิธีจัดการ credentials ใน n8n อย่างมืออาชีพ

Credential Types ใน n8n

1. Built-in Credentials

n8n มี credential types สำเร็จรูปสำหรับบริการยอดนิยม:

- Google Sheets API
- Slack API
- Notion API
- Airtable API
- GitHub API
- Stripe API
- และอีกมากมาย...

2. Generic Credentials

สำหรับบริการที่ไม่มี built-in:

- Header Auth: API Key ใน header
- Query Auth: API Key ใน URL query
- Basic Auth: Username + Password
- OAuth2: Token-based authentication
- Custom Auth: สร้าง format เอง

Creating Credentials

วิธีสร้าง Credentials

1. ไปที่ Credentials (ซ้ายล่าง)
2. คลิก "Add Credential"
3. เลือก type (เช่น Google Sheets API)
4. ตั้งชื่อที่จำง่าย
5. กรอกข้อมูลตามที่ระบบขอ
6. Test และ Save

ตั้งชื่อ Credential ที่ดี

❌ ชื่อไม่ดี:
- "API Key"
- "My Creds"
- "Test"

✅ ชื่อที่ดี:
- "Google Sheets - Production"
- "Slack - Marketing Team"
- "Stripe - Live Account"
- "Notion - Company Workspace"

Pattern: [Service] - [Environment/Purpose]

Authentication Types

1. API Key Authentication

เมื่อไหร่ใช้:
- REST APIs ส่วนใหญ่
- Third-party services

วิธีตั้งค่า:
1. เลือก "Header Auth" หรือ "Query Auth"
2. ระบุ header name (เช่น X-API-Key, Authorization)
3. ใส่ API Key value

2. Basic Authentication

เมื่อไหร่ใช้:
- HTTP Basic Auth
- Legacy APIs

วิธีตั้งค่า:
1. เลือก "Basic Auth"
2. ใส่ Username
3. ใส่ Password
4. n8n จะ encode เป็น Base64 ให้

3. OAuth2

เมื่อไหร่ใช้:
- Google APIs
- Microsoft APIs
- Social login

วิธีตั้งค่า:
1. สร้าง OAuth App ใน provider
2. ได้ Client ID และ Client Secret
3. ใส่ใน n8n credential
4. Authorize ผ่าน browser

OAuth2 Flows:
- Authorization Code (มี user login)
- Client Credentials (server-to-server)

4. Bearer Token

เมื่อไหร่ใช้:
- JWT tokens
- Personal Access Tokens

วิธีตั้งค่า:
1. เลือก "Header Auth"
2. Name: Authorization
3. Value: Bearer your-token-here

Security Best Practices

1. ไม่ Hardcode Credentials

❌ ไม่ดี - Hardcode ใน Expression:
{{ 'sk-1234567890abcdef' }}

✅ ดี - ใช้ Credential:
{{ $credentials.apiKey }}

2. แยก Environment

สร้าง credentials แยกสำหรับ:

Development:
- "Stripe - Test Mode"
- "Database - Dev"
- "Email - Sandbox"

Production:
- "Stripe - Live Mode"
- "Database - Prod"
- "Email - Production"

→ ป้องกันการใช้ผิด environment

3. Principle of Least Privilege

ให้ credentials มีสิทธิ์เท่าที่จำเป็น:

❌ ไม่ดี:
- Admin API key ที่ทำได้ทุกอย่าง

✅ ดี:
- Read-only key สำหรับ workflow ที่แค่อ่านข้อมูล
- Limited scope key สำหรับ specific actions

4. Rotate Credentials Regularly

ตั้งการ rotate credentials:

- API Keys: ทุก 90 วัน
- Passwords: ทุก 60 วัน
- Tokens: ตาม expiry

Checklist:
☐ สร้าง key/token ใหม่
☐ อัปเดตใน n8n
☐ Test workflows
☐ Revoke key เก่า

5. Audit Credential Usage

ติดตามว่า credential ใช้ที่ไหน:

1. ไปที่ Credentials
2. คลิก credential ที่ต้องการ
3. ดู "Used in" section
4. Review workflows ที่ใช้

→ ลบ credentials ที่ไม่ได้ใช้

Environment Variables

ใช้ ENV Variables

สำหรับ self-hosted n8n:

docker-compose.yml:
environment:
  - MY_API_KEY=sk-xxxxx
  - DATABASE_URL=postgres://...

ใน n8n:
{{ $env.MY_API_KEY }}
{{ $env.DATABASE_URL }}

Encryption

n8n เข้ารหัส credentials ด้วย:

1. N8N_ENCRYPTION_KEY
   - ต้องตั้งค่าเอง (self-hosted)
   - รักษาให้ปลอดภัย
   - อย่าทำหาย (ถอดรหัสไม่ได้)

docker-compose.yml:
environment:
  - N8N_ENCRYPTION_KEY=your-very-long-secret-key

Sharing Credentials

Share within Team

n8n Cloud & Enterprise:
1. ไปที่ Credentials
2. คลิก credential → Share
3. เลือก users/teams
4. กำหนด permission (Use/Edit)

Self-hosted:
- ใช้ shared credentials ผ่าน config
- หรือ export/import credentials

Export/Import (Self-hosted)

Export:
n8n export:credentials --all --output=creds.json

Import:
n8n import:credentials --input=creds.json

⚠️ WARNING:
- Exported file มี sensitive data
- เก็บอย่างปลอดภัย
- ลบหลังใช้งาน

Troubleshooting

Credential Test Fails

Common issues:

1. API Key expired/revoked
   → สร้างใหม่

2. Wrong scope/permissions
   → ตรวจสอบ API permissions

3. IP whitelist
   → เพิ่ม n8n server IP

4. Rate limiting
   → รอสักครู่แล้วลองใหม่

5. OAuth token expired
   → Re-authorize

OAuth2 Issues

"Invalid redirect URI":
→ เพิ่ม n8n callback URL ใน OAuth app

"Token expired":
→ Delete credential แล้วสร้างใหม่

"Insufficient scope":
→ เพิ่ม required scopes ใน OAuth app

Credential Templates

Google APIs

1. ไป Google Cloud Console
2. สร้าง Project
3. Enable API ที่ต้องการ
4. สร้าง OAuth consent screen
5. สร้าง OAuth credentials
6. ใส่ใน n8n:
   - Client ID
   - Client Secret
7. Authorize

Slack

1. ไป api.slack.com
2. สร้าง App
3. เพิ่ม Bot Token Scopes ที่ต้องการ
4. Install to Workspace
5. Copy Bot Token (xoxb-...)
6. ใส่ใน n8n credential

Notion

1. ไป notion.so/my-integrations
2. สร้าง Integration
3. Copy Internal Integration Token
4. Share pages กับ integration
5. ใส่ใน n8n credential

Security Checklist

☐ ใช้ unique credentials per environment
☐ ใช้ least privilege principle
☐ ตั้ง N8N_ENCRYPTION_KEY (self-hosted)
☐ Rotate credentials ทุก 90 วัน
☐ Audit unused credentials
☐ ไม่ hardcode secrets ใน workflows
☐ Backup encryption key อย่างปลอดภัย
☐ ใช้ OAuth แทน API key ถ้าได้
☐ Enable 2FA บน service accounts
☐ Log credential access (Enterprise)

สรุป

Credential Management Essentials:

  1. Naming Convention: ตั้งชื่อให้ชัดเจน
  2. Separation: แยก dev/prod credentials
  3. Least Privilege: ให้สิทธิ์เท่าที่จำเป็น
  4. Rotation: เปลี่ยนรหัสผ่านเป็นประจำ
  5. Encryption: ใช้ encryption key ที่แข็งแกร่ง

Security Tips:

  • อย่า hardcode credentials
  • Audit การใช้งานเป็นประจำ
  • ลบ credentials ที่ไม่ใช้
  • ใช้ OAuth2 ถ้าเป็นไปได้
  • Backup encryption key

อ่านเพิ่มเติม:


เขียนโดย

AI Unlocked Team