Đăng ký quyền truy cập sớm

Nhập tên của bạn cùng email hoặc số điện thoại. Chúng tôi sẽ liên hệ và gửi thông tin truy cập Tajo.

Khóa API

Khóa API là phương thức chính để xác thực với API của Brevo. Chúng mang lại một cách đơn giản và an toàn để truy cập tài khoản của bạn bằng chương trình.

Khóa API là gì?

Khóa API là những định danh duy nhất dùng để xác thực ứng dụng của bạn khi gửi yêu cầu tới API của Brevo. Mỗi khóa là một chuỗi 64 ký tự, vừa đóng vai trò định danh vừa đóng vai trò mật khẩu.

Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4

Tạo khóa API

Hướng dẫn từng bước

  1. Đăng nhập vào Brevo: Truy cập bảng điều khiển Brevo của bạn
  2. Đi tới Settings: Nhấp vào hồ sơ của bạn → Settings
  3. Vào API Keys: Chọn “API Keys” từ menu bên trái
  4. Tạo khóa mới: Nhấp “Generate a New API Key”
  5. Đặt tên cho khóa: Đặt một tên mô tả rõ ràng (ví dụ: “Production App”, “Development Testing”)
  6. Thiết lập quyền: Chọn mức truy cập phù hợp
  7. Tạo khóa: Nhấp “Generate” và sao chép khóa ngay lập tức

Quy ước đặt tên khóa API

Hãy dùng những tên mô tả giúp bạn nhận ra mục đích của khóa:

  • production-web-app
  • staging-environment
  • mobile-app-ios
  • webhook-listener
  • data-sync-service

Các loại khóa API và quyền

Khóa toàn quyền

Permissions: All API endpoints
Use cases: Complete application integration
Risk level: High - protect carefully

Khóa chỉ đọc

Permissions: GET requests only
Use cases: Analytics, reporting, dashboards
Risk level: Low - limited access

Khóa chỉ gửi

Permissions: Transactional email sending
Use cases: Application notifications, receipts
Risk level: Medium - can send emails

Khóa quản lý liên hệ

Permissions: Contact CRUD operations
Use cases: CRM integrations, form submissions
Risk level: Medium - data modification

Sử dụng khóa API

Xác thực qua header

Đưa khóa API của bạn vào header api-key:

GET /v3/account HTTP/1.1
Host: api.brevo.com
Accept: application/json
Content-Type: application/json
api-key: YOUR_API_KEY

Ví dụ mã nguồn

JavaScript/Node.js

const brevo = require('@getbrevo/brevo');
const apiInstance = new brevo.AccountApi();
apiInstance.setApiKey(brevo.AccountApiApiKeys.apiKey, process.env.BREVO_API_KEY);
// Make authenticated request
apiInstance.getAccount()
.then(data => console.log('Account info:', data))
.catch(error => console.error('Error:', error));

Python

import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
# Configure API key
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = 'YOUR_API_KEY'
# Create API instance
api_instance = sib_api_v3_sdk.AccountApi(sib_api_v3_sdk.ApiClient(configuration))
try:
# Get account info
api_response = api_instance.get_account()
print(api_response)
except ApiException as e:
print("Exception when calling AccountApi->get_account: %s\n" % e)

PHP

<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure API key
$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', 'YOUR_API_KEY');
// Create API instance
$apiInstance = new SendinBlue\Client\Api\AccountApi(
new GuzzleHttp\Client(),
$config
);
try {
$result = $apiInstance->getAccount();
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AccountApi->getAccount: ', $e->getMessage(), PHP_EOL;
}
?>

Ruby

require 'sib-api-v3-sdk'
# Configure API key
SibApiV3Sdk.configure do |config|
config.api_key['api-key'] = 'YOUR_API_KEY'
end
# Create API instance
api_instance = SibApiV3Sdk::AccountApi.new
begin
# Get account info
result = api_instance.get_account
puts result
rescue SibApiV3Sdk::ApiError => e
puts "Exception when calling AccountApi->get_account: #{e}"
end

Bảo mật khóa API

Lưu trữ an toàn

Biến môi trường (khuyến nghị)

Terminal window
# .env file
BREVO_API_KEY=xkeysib-your-api-key-here
# Usage in code
const apiKey = process.env.BREVO_API_KEY;

Trình quản lý secret trên cloud

  • AWS Secrets Manager
  • Google Secret Manager
  • Azure Key Vault
  • HashiCorp Vault

Thực hành bảo mật tốt nhất

  1. Không bao giờ hardcode khóa

    // ❌ Bad - hardcoded
    const apiKey = "xkeysib-a1b2c3d4...";
    // ✅ Good - environment variable
    const apiKey = process.env.BREVO_API_KEY;
  2. Dùng khóa khác nhau cho từng môi trường

    Production: BREVO_API_KEY_PROD
    Staging: BREVO_API_KEY_STAGING
    Development: BREVO_API_KEY_DEV
  3. Xoay vòng khóa định kỳ

    • Đặt nhắc nhở trên lịch để xoay vòng hằng quý
    • Dùng công cụ tự động hóa cho việc xoay vòng khóa
    • Chuẩn bị sẵn một phương án quay lui
  4. Theo dõi việc sử dụng khóa

    • Thiết lập cảnh báo cho hoạt động bất thường
    • Xem lại nhật ký sử dụng khóa hằng tháng
    • Theo dõi các mẫu truy cập theo khu vực địa lý

Quản lý khóa

Theo dõi khóa đang hoạt động

Theo dõi các khóa đang hoạt động của bạn trong bảng điều khiển:

Key Name: production-web-app
Created: 2024-01-15
Last Used: 2024-01-20 14:30 UTC
Requests Today: 1,247
Status: Active

Quy trình xoay vòng khóa

  1. Tạo khóa mới: Tạo khóa thay thế
  2. Cập nhật cấu hình: Triển khai với khóa mới
  3. Theo dõi: Đảm bảo khóa mới hoạt động đúng
  4. Thời gian ân hạn: Giữ khóa cũ hoạt động trong 24 đến 48 giờ
  5. Thu hồi khóa cũ: Xóa khóa trước đó

Thu hồi khóa khẩn cấp

Nếu một khóa bị lộ:

  1. Thu hồi ngay lập tức: Xóa khóa khỏi bảng điều khiển
  2. Tạo khóa thay thế: Tạo khóa mới ngay
  3. Cập nhật ứng dụng: Triển khai với khóa mới càng sớm càng tốt
  4. Theo dõi hoạt động: Kiểm tra xem có việc sử dụng trái phép không
  5. Báo cáo sự cố: Ghi lại sự cố bảo mật này

Giới hạn tần suất và khóa API

Mỗi khóa API có giới hạn tần suất riêng:

  • Gói Free: 300 yêu cầu/ngày
  • Gói Starter: 20.000 yêu cầu/ngày
  • Gói Business: 50.000 yêu cầu/ngày
  • Gói Enterprise: Giới hạn tùy chỉnh

Header giới hạn tần suất

HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200

Xử lý giới hạn tần suất

async function makeApiCall() {
try {
const response = await fetch(url, { headers });
if (response.status === 429) {
const resetTime = response.headers.get('X-RateLimit-Reset');
const waitTime = resetTime - Math.floor(Date.now() / 1000);
console.log(`Rate limited. Waiting ${waitTime} seconds`);
await new Promise(resolve => setTimeout(resolve, waitTime * 1000));
// Retry the request
return makeApiCall();
}
return response.json();
} catch (error) {
console.error('API call failed:', error);
throw error;
}
}

Khắc phục sự cố khóa API

Các thông báo lỗi thường gặp

Khóa API không hợp lệ (401)

{
"code": "unauthorized",
"message": "Invalid API key provided"
}

Không đủ quyền (403)

{
"code": "permission_denied",
"message": "API key does not have required permissions"
}

Vượt quá giới hạn tần suất (429)

{
"code": "too_many_requests",
"message": "Rate limit exceeded for API key"
}

Danh sách kiểm tra khi gỡ lỗi

  • Khóa được định dạng đúng (64 ký tự)
  • Không có khoảng trắng thừa hoặc ký tự ẩn
  • Khóa có đủ quyền cần thiết
  • Khóa đang hoạt động (chưa bị thu hồi)
  • Vẫn trong giới hạn tần suất
  • Dùng đúng endpoint API
  • Header được định dạng đúng

Bước tiếp theo

Đăng ký quyền truy cập sớm

Nhập tên của bạn cùng email hoặc số điện thoại. Chúng tôi sẽ liên hệ và gửi thông tin truy cập Tajo.

tự động nhận diện
Trợ lý AI

Xin chào! Hãy hỏi tôi về tài liệu.