Mỗi API key của Anthropic giống như một thẻ tín dụng không giới hạn hạn mức nối vào credit của bạn. Ai có key đó đều có thể:
- Tạo tài khoản Anthropic và lấy API key đầu tiên
- Lưu trữ API key an toàn (không leak vào Git)
- Thiết lập workspace và quản lý nhiều key cho dự án khác nhau
- Nhận diện cảnh báo bảo mật quan trọng khi xử lý API key
Quy trình 5 bước lấy API key
Bước 1: Vào Anthropic Console
Mở trình duyệt, vào: console.anthropic.com
Nếu chưa có tài khoản:
Anthropic có thể yêu cầu số điện thoại để verify (giảm spam). Cung cấp số thật.
Bước 2: Nạp credit (nếu chưa có)
Để gọi API, tài khoản cần có credit. Trial có thể có $5 free, không thì:
Pro tip: Bật "Auto-reload" khi credit xuống < $10 để tránh bị ngắt giữa lúc đang code.
Bước 3: Navigate đến API Keys page
Trong console, từ menu bên trái:
Bước 4: Create Key
Click nút "Create Key" (góc trên phải). Form hiện ra:
Best practices khi đặt tên:
Workspace:
Bước 5: Copy key và lưu an toàn
Sau khi click Create, pop-up hiện key dạng:
CỰC KỲ QUAN TRỌNG:
Copy key và lưu vào file .env (xem section tiếp).
- Click "Sign up"
- Đăng nhập bằng Google / GitHub / email
- Xác nhận email
- Vào Settings → Billing
- Thêm credit card (hoặc PayPal)
- Nạp tối thiểu $5 — đủ cho toàn khóa này nếu dùng Sonnet/Haiku hợp lý
- Click "API Keys"
- Hoặc click nút "Get API Keys" ở dashboard chính (góc trên phải)
- Nêu rõ mục đích: course-learning, prod-chatbot, dev-experimental
- Tránh generic: key1, mykey, test
- Một key/environment: prod-chatbot, staging-chatbot, dev-chatbot
- Default — đủ cho cá nhân / học
- Tạo workspace riêng khi bạn có team (tách billing, permission)
┌───────────────────────────────────────────────┐ │ ⚠️ Key CHỈ HIỂN THỊ 1 LẦN DUY NHẤT. │ │ │ │ Nếu bạn đóng pop-up mà chưa copy: │ │ → Phải XÓA key cũ và tạo key MỚI. │ └───────────────────────────────────────────────┘
sk-ant-api03-ABCD1234...xyzLưu trữ API key an toàn
Quy tắc số 1: KHÔNG BAO GIỜ hard-code key trong source.
Setup chuẩn với .env
Trong thư mục project:
1. Tạo file .env:
# ❌ TUYỆT ĐỐI KHÔNG
client = Anthropic(api_key="sk-ant-api03-ABCD1234...")
# ✅ Dùng env var
from anthropic import Anthropic
client = Anthropic() # tự đọc từ ANTHROPIC_API_KEY env varSetup chuẩn với .env
2. Tạo / update file .gitignore:
# .env (đặt ở project root)
ANTHROPIC_API_KEY="sk-ant-api03-ABCD1234...xyz"Lưu trữ API key an toàn (tiếp)
3. Kiểm tra .env ĐÃ ở trong .gitignore trước khi commit:
# .gitignore
.env
.env.local
.env.*.local
*.key
.venv/Lưu trữ API key an toàn (tiếp)
4. Dùng python-dotenv để load:
git status
# Kết quả PHẢI KHÔNG có .envLưu trữ API key an toàn (tiếp)
Tạo file .env.example (best practice)
Commit file template để team khác biết cần những env var nào:
from dotenv import load_dotenv
load_dotenv() # đọc .env vào os.environ
from anthropic import Anthropic
client = Anthropic() # tự lấy ANTHROPIC_API_KEYTạo file .env.example (best practice)
Thành viên mới clone repo → copy .env.example thành .env → điền key của họ.
# .env.example (commit vào git)
ANTHROPIC_API_KEY=
DATABASE_URL=Nhiều environment — nhiều key
Production app thường có 3 env:
Tại sao tách key? Vì:
Naming convention
- Dev vs prod có traffic khác nhau → cần budget khác
- Nếu dev key lộ → không ảnh hưởng prod
- Audit log rõ ràng theo env
┌──────────────┬──────────────┬──────────────┐ │ DEV │ STAGING │ PROD │ ├──────────────┼──────────────┼──────────────┤ │ key riêng │ key riêng │ key riêng │ │ budget nhỏ │ budget vừa │ budget lớn │ │ Sonnet/Haiku│ Sonnet │ Sonnet/Opus │ │ log verbose │ log normal │ log minimal │ └──────────────┴──────────────┴──────────────┘
dev-chatbot-jimmy
staging-chatbot
prod-chatbot
prod-chatbot-rotated-2026-04 ← khi rotate định kỳQuản lý key qua thời gian
Rotate định kỳ (khuyến nghị 3-6 tháng)
Check usage định kỳ
Console → Usage — xem biểu đồ:
Alerts khuyến nghị:
Khi nào cần revoke ngay
Revoke qua: Console → API Keys → tick key → Disable. Không cần retrieve key để disable.
- Tạo key mới với tên prod-chatbot-rotated-YYYY-MM
- Update app config dùng key mới
- Deploy + verify
- Delete key cũ trên console
- Request count / day
- Token consumption / model
- Cost / day
- $50/ngày → email
- $100/ngày → SMS
- $200/ngày → page on-call
- Key bị commit vào Git (kể cả private repo, vẫn nên revoke)
- Laptop có key bị mất/trộm
- Ex-employee từng access key
- Bất kỳ nghi ngờ nào
Ví dụ thực chiến: Setup hoàn chỉnh cho course
Bước 1: Tạo project
Bước 2: Tạo .gitignore
mkdir claude-api-course
cd claude-api-courseBước 2: Tạo .gitignore
Bước 3: Tạo .env
cat > .gitignore << 'EOF'
.env
.venv/
__pycache__/
*.ipynb_checkpoints
.DS_Store
EOFBước 3: Tạo .env
Edit .env và paste key thực.
Bước 4: Tạo .env.example
echo 'ANTHROPIC_API_KEY="sk-ant-api03-PASTE-YOUR-KEY-HERE"' > .envBước 4: Tạo .env.example
Bước 5: Setup venv + install
echo 'ANTHROPIC_API_KEY=' > .env.exampleBước 5: Setup venv + install
Bước 6: Test
Tạo test_key.py:
python3 -m venv .venv
source .venv/bin/activate
pip install anthropic python-dotenv jupyterlabBước 6: Test
Chạy:
from dotenv import load_dotenv
load_dotenv()
from anthropic import Anthropic
client = Anthropic()
msg = client.messages.create(
model="claude-haiku-4-5",
max_tokens=50,
messages=[{"role": "user", "content": "Say 'key works!'"}]
)
print(msg.content[0].text)Ví dụ thực chiến: Setup hoàn chỉnh cho course (tiếp)
Nếu in ra key works! — đã OK. Nếu lỗi, check:
Bước 7: Init git
- .env có đúng path không
- Key có đúng không (copy đầy đủ chưa)
- Credit có đủ không
python test_key.pyBước 7: Init git
git init
git add .
git status # Verify .env KHÔNG trong list
git commit -m "Initial setup"Case studies theo ngành
💻 Startup Tech — Multi-tenant SaaS
Setup: 1 key master cho billing + 1 workspace / customer enterprise.
Lý do: Mỗi customer lớn muốn audit riêng biệt. Workspace giúp tách analytics mà vẫn dùng 1 account.
📊 Data Team — Shared notebook
Problem: Team 5 người dùng chung Jupyter server, ai cũng cần gọi Claude.
Anti-solution: Hard-code 1 key chia sẻ → không biết ai dùng, ai tiêu tiền.
Solution:
⚖️ Legal / Enterprise — Compliance
Setup: Sử dụng Amazon Bedrock hoặc Google Vertex AI thay API trực tiếp → tuân thủ data residency, HIPAA, SOC2.
Key Anthropic không cần, dùng credentials AWS/GCP. (Xem bài 6.4 — Access patterns.)
- Mỗi người 1 key riêng (tự tạo, self-service)
- Jupyter load key từ ~/.env user-specific
- Dashboard usage / user
Anti-patterns — Sai lầm bảo mật
❌ Commit .env vào Git
Hiểu hiện: git add . không check → .env push lên GitHub.
Hậu quả: Key lộ, bot quét trong 5 phút, bill $5000.
Fix:
❌ Share key qua Slack / email
Hiểu hiện: "Key của nhóm đây: sk-ant-..." trên kênh team Slack.
Hậu quả: Slack history vĩnh viễn, nếu Slack bị hack → key lộ.
Fix:
❌ Để key trong Docker image
Hiểu hiện: Dockerfile có ENV ANTHROPIC_API_KEY=sk-....
Hậu quả: Image push lên registry → ai pull cũng có key.
Fix: Inject qua runtime env var, không bake vào image:
- Luôn có .env trong .gitignore TRƯỚC khi tạo file .env
- Set up pre-commit hook check .env không được staged:
- Mỗi dev tự tạo key riêng qua console (self-service)
- Nếu PHẢI share: 1Password / Vaultwarden / HashiCorp Vault
# .git/hooks/pre-commit
if git diff --cached --name-only | grep -qE '\.env$|\.env\.[^e]'; then
echo "Error: .env files should not be committed"
exit 1
fi❌ Để key trong Docker image
Hoặc dùng secret manager (AWS Secrets Manager, K8s secrets).
❌ Log key vào log file
Hiểu hiện: Debug log in client.api_key → log file có key.
Fix: Config logger để filter key khỏi log:
docker run -e ANTHROPIC_API_KEY=sk-... myapp❌ Log key vào log file
❌ 1 key cho tất cả
Hiểu hiện: Prod, staging, dev, everyone dùng chung 1 key.
Fix: Mỗi env + mỗi dev → key riêng. Dễ audit, dễ revoke.
import logging
class RedactKeyFilter(logging.Filter):
def filter(self, record):
if "sk-ant-" in record.msg:
record.msg = record.msg.replace(
record.msg[record.msg.find("sk-ant-"):record.msg.find("sk-ant-")+30],
"sk-ant-[REDACTED]"
)
return TrueÁp dụng ngay
Bài tập 1: Lấy API key và test (15 phút)
Checklist hoàn thành:
Bài tập 2: Tự audit security (10 phút)
Mở terminal, chạy:
Chỉ được có 1 match: trong .env. Nếu có ở file khác → di chuyển vào .env.
- Vào console.anthropic.com
- Tạo account, nạp $5
- Tạo key tên anthropic-course-vi
- Setup project theo section "Ví dụ thực chiến" trên
- Chạy test_key.py thành công
- [ ] Có key sk-ant-api03-... trong .env
- [ ] .env trong .gitignore
- [ ] python test_key.py in ra phản hồi của Claude
- [ ] Console hiển thị có request trong Usage
- [ ] git status KHÔNG liệt kê .env
# Check key không trong file nào:
grep -r "sk-ant" . --exclude-dir=.venv --exclude-dir=.gitBài tập 2: Tự audit security (10 phút)
Phải trả về empty. Nếu có log → key đã từng bị commit → REVOKE key ngay và tạo mới.
# Check git tracking:
git log --all --full-history -- .envTóm tắt bài học
🎯 API key = thẻ tín dụng không giới hạn. Treat với sự cẩn trọng tương xứng.
🎯 5 bước lấy key: Console → Workspace → Create Key → Name → Copy ngay. Key chỉ hiện 1 lần duy nhất.
🎯 Setup .env + .gitignore là tiêu chuẩn. Dùng python-dotenv để load, Anthropic() tự đọc từ env var.
🎯 Không bao giờ commit key, share qua chat, bake vào Docker. Revoke ngay nếu nghi ngờ lộ.
🎯 Rotate định kỳ 3-6 tháng. Dashboard usage để phát hiện bất thường sớm.
- Anthropic Console — API Keys
- Best practices — API keys
- python-dotenv docs
- Git pre-commit hooks cho detect secrets