คีย์ API
คีย์ API เป็นวิธีหลักในการยืนยันตัวตนกับ Brevo API และเป็นช่องทางที่เรียบง่ายและปลอดภัยสำหรับเข้าถึงบัญชีของคุณผ่านโปรแกรม
คีย์ API คืออะไร
คีย์ API คือตัวระบุเฉพาะที่ใช้ยืนยันตัวตนของแอปพลิเคชันของคุณเมื่อเรียกใช้งาน Brevo API คีย์แต่ละอันเป็นสตริงความยาว 64 อักขระ ซึ่งทำหน้าที่เป็นทั้งตัวระบุและรหัสผ่านในตัวเดียวกัน
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4การสร้างคีย์ API
คู่มือทีละขั้นตอน
- เข้าสู่ระบบ Brevo: เปิดแดชบอร์ด Brevo ของคุณ
- ไปที่การตั้งค่า: คลิกที่โปรไฟล์ของคุณ แล้วเลือก Settings
- เปิดหน้า API Keys: เลือก “API Keys” จากเมนูด้านซ้าย
- สร้างคีย์ใหม่: คลิก “Generate a New API Key”
- ตั้งชื่อคีย์: ตั้งชื่อที่สื่อความหมาย (เช่น “Production App”, “Development Testing”)
- กำหนดสิทธิ์: เลือกระดับการเข้าถึงที่เหมาะสม
- สร้าง: คลิก “Generate” แล้วคัดลอกคีย์ทันที
แนวทางการตั้งชื่อคีย์ API
ใช้ชื่อที่สื่อความหมายเพื่อให้ระบุวัตถุประสงค์ของคีย์ได้ง่าย
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
ประเภทของคีย์ API และสิทธิ์การใช้งาน
คีย์แบบเข้าถึงเต็มรูปแบบ
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyคีย์แบบอ่านอย่างเดียว
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessคีย์สำหรับส่งอีเมลเท่านั้น
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsคีย์สำหรับจัดการรายชื่อผู้ติดต่อ
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationการใช้งานคีย์ API
การยืนยันตัวตนผ่านเฮดเดอร์
แนบคีย์ API ของคุณไว้ในเฮดเดอร์ api-key
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYตัวอย่างโค้ด
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 requestapiInstance.getAccount() .then(data => console.log('Account info:', data)) .catch(error => console.error('Error:', error));Python
import sib_api_v3_sdkfrom sib_api_v3_sdk.rest import ApiException
# Configure API keyconfiguration = sib_api_v3_sdk.Configuration()configuration.api_key['api-key'] = 'YOUR_API_KEY'
# Create API instanceapi_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
<?phprequire_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 keySibApiV3Sdk.configure do |config| config.api_key['api-key'] = 'YOUR_API_KEY'end
# Create API instanceapi_instance = SibApiV3Sdk::AccountApi.new
begin # Get account info result = api_instance.get_account puts resultrescue SibApiV3Sdk::ApiError => e puts "Exception when calling AccountApi->get_account: #{e}"endความปลอดภัยของคีย์ API
การจัดเก็บอย่างปลอดภัย
ตัวแปรสภาพแวดล้อม (แนะนำ)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;บริการจัดการความลับบนคลาวด์
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
แนวทางปฏิบัติด้านความปลอดภัย
-
อย่าเขียนคีย์ไว้ในโค้ดโดยตรง
// ❌ Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// ✅ Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
ใช้คีย์แยกกันในแต่ละสภาพแวดล้อม
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
หมุนเวียนคีย์อย่างสม่ำเสมอ
- ตั้งการแจ้งเตือนในปฏิทินให้หมุนเวียนคีย์ทุกไตรมาส
- ใช้เครื่องมืออัตโนมัติในการหมุนเวียนคีย์
- เตรียมแผนย้อนกลับไว้ให้พร้อม
-
ติดตามการใช้งานคีย์
- ตั้งการแจ้งเตือนเมื่อพบกิจกรรมผิดปกติ
- ตรวจสอบบันทึกการใช้งานคีย์ทุกเดือน
- ติดตามรูปแบบการเข้าถึงตามพื้นที่ทางภูมิศาสตร์
การจัดการคีย์
การเฝ้าติดตามคีย์ที่ใช้งานอยู่
ติดตามคีย์ที่ใช้งานอยู่ของคุณได้จากแดชบอร์ด
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: Activeขั้นตอนการหมุนเวียนคีย์
- สร้างคีย์ใหม่: สร้างคีย์สำหรับใช้แทนคีย์เดิม
- อัปเดตการตั้งค่า: ดีพลอยระบบด้วยคีย์ใหม่
- ติดตามผล: ตรวจสอบให้แน่ใจว่าคีย์ใหม่ทำงานถูกต้อง
- ช่วงผ่อนผัน: ให้คีย์เดิมใช้งานต่อได้อีก 24 ถึง 48 ชั่วโมง
- เพิกถอนคีย์เดิม: ลบคีย์เดิมทิ้ง
การเพิกถอนคีย์ในกรณีฉุกเฉิน
หากคีย์ถูกเปิดเผยหรือถูกขโมย
- เพิกถอนทันที: ลบคีย์ออกจากแดชบอร์ด
- สร้างคีย์ทดแทน: สร้างคีย์ใหม่ทันที
- อัปเดตแอปพลิเคชัน: ดีพลอยด้วยคีย์ใหม่โดยเร็วที่สุด
- ตรวจสอบกิจกรรม: ตรวจหาการใช้งานที่ไม่ได้รับอนุญาต
- รายงานเหตุการณ์: บันทึกรายละเอียดของเหตุการณ์ด้านความปลอดภัย
ขีดจำกัดอัตราการเรียกใช้กับคีย์ API
คีย์ API แต่ละอันมีขีดจำกัดอัตราการเรียกใช้เป็นของตัวเอง
- แพ็กเกจฟรี: 300 คำขอต่อวัน
- แพ็กเกจ Starter: 20,000 คำขอต่อวัน
- แพ็กเกจ Business: 50,000 คำขอต่อวัน
- แพ็กเกจ Enterprise: กำหนดขีดจำกัดเฉพาะราย
เฮดเดอร์แสดงขีดจำกัดอัตราการเรียกใช้
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200การรับมือกับขีดจำกัดอัตราการเรียกใช้
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; }}การแก้ปัญหาเกี่ยวกับคีย์ API
ข้อความแสดงข้อผิดพลาดที่พบบ่อย
คีย์ API ไม่ถูกต้อง (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}สิทธิ์ไม่เพียงพอ (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}เกินขีดจำกัดอัตราการเรียกใช้ (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}รายการตรวจสอบเมื่อแก้ปัญหา
- คีย์มีรูปแบบถูกต้อง (64 อักขระ)
- ไม่มีช่องว่างเกินหรืออักขระที่มองไม่เห็นปะปนอยู่
- คีย์มีสิทธิ์ที่จำเป็น
- คีย์ยังใช้งานได้ (ไม่ถูกเพิกถอน)
- ยังอยู่ในขีดจำกัดอัตราการเรียกใช้
- ใช้เอนด์พอยต์ API ที่ถูกต้อง
- จัดรูปแบบเฮดเดอร์อย่างถูกต้อง
ขั้นตอนถัดไป
- เรียนรู้เกี่ยวกับ OAuth 2.0
- ทำความเข้าใจโทเคน JWT
- สำรวจขีดจำกัดอัตราการเรียกใช้
- ทดลองใช้ SDK