Vault היא מערכת לניהול סודות והצפנה שמבוססת על זהויות. השילוב הזה אוסף את יומני הביקורת של Vault. השילוב אוסף גם מדדים של טוקנים, זיכרון ואחסון.
מידע נוסף על Vault זמין במסמכי התיעוד של Hashicorp Vault.
דרישות מוקדמות
כדי לאסוף נתוני טלמטריה של Vault, צריך להתקין את סוכן התפעול:
- כדי להשתמש במדדים, צריך להתקין גרסה 2.18.2 ואילך.
- כדי לראות את היומנים, צריך להתקין את גרסה 2.18.1 ואילך.
השילוב הזה תומך ב-Vault גרסה 1.6 ומעלה.
הגדרת מופע Vault
כדי לאסוף נתוני טלמטריה ממופע Vault, צריך להגדיר את השדה prometheus_retention_time לערך שאינו אפס בקובץ ההגדרות של Vault בפורמט HCL או JSON.
Full configuration options can be found at https://www.vaultproject.io/docs/configuration
telemetry {
prometheus_retention_time = "10m"
disable_hostname = false
}
בנוסף, משתמש עם גישת Root נדרש כדי להפעיל איסוף של יומני ביקורת וכדי ליצור מדיניות ACL של מדדי Prometheus.
משתמשים בטוקן הבסיסי כדי להוסיף מדיניות עם יכולות קריאה לנקודת הקצה /sys/metrics.
המדיניות הזו משמשת ליצירת טוקן Vault עם הרשאה מספקת לאיסוף מדדים של Vault.
אם אתם מאתחלים את Vault בפעם הראשונה, אתם יכולים להשתמש בסקריפט הבא כדי ליצור אסימון בסיס. אחרת, במאמר יצירת אסימוני שורש באמצעות מפתחות ביטול ההצפנה מוסבר איך ליצור אסימון שורש.
export VAULT_ADDR=http://localhost:8200
# Create simple Vault initialization with 1 key share and a key threshold of 1.
vault operator init -key-shares=1 -key-threshold=1 | head -n3 | cat > .vault-init
VAULT_KEY=$(grep 'Unseal Key 1' .vault-init | awk '{print $NF}')
VAULT_TOKEN=$(grep 'Initial Root Token:' .vault-init | awk '{print $NF}')
export VAULT_TOKEN
vault operator unseal $VAULT_KEY
# Enable audit logs.
vault audit enable file file_path=/var/log/vault_audit.log
# Create Prometheus ACL policy to access metrics endpoint.
vault policy write prometheus-metrics - << EOF
path "/sys/metrics" {
capabilities = ["read"]
}
EOF
# Create an example token with the prometheus-metrics policy to access Vault metrics.
# This token is used as `$VAULT_TOKEN` in your Ops Agent configuration for Vault.
vault token create -field=token -policy prometheus-metrics > prometheus-token
הגדרת סוכן תפעול ל-Vault
פועלים לפי המדריך בנושא הגדרת Ops Agent, מוסיפים את הרכיבים הנדרשים לאיסוף טלמטריה ממופעי Vault ומפעילים מחדש את הסוכן.
הגדרה לדוגמה
הפקודות הבאות יוצרות את ההגדרה לאיסוף ולעיבוד של נתוני טלמטריה עבור Vault:
כדי שהשינויים האלה ייכנסו לתוקף, צריך להפעיל מחדש את Ops Agent:
Linux
- כדי להפעיל מחדש את הסוכן, מריצים את הפקודה הבאה במופע:
sudo systemctl restart google-cloud-ops-agent
- כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- מתחברים למופע באמצעות RDP או כלי דומה ומתחברים ל-Windows.
- פותחים טרמינל ב-PowerShell עם הרשאות אדמין על ידי לחיצה ימנית על סמל PowerShell ובחירה באפשרות הפעלה כמנהל מערכת.
- כדי להפעיל מחדש את הסוכן, מריצים את פקודת PowerShell הבאה:
Restart-Service google-cloud-ops-agent -Force
- כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
Get-Service google-cloud-ops-agent*
הגדרת איסוף יומנים
כדי להטמיע יומנים מ-Vault, צריך ליצור מקלט ליומנים ש-Vault מייצר, ואז ליצור צינור למקלט החדש.
כדי להגדיר מקלט ליומני vault_audit, מציינים את השדות הבאים:
| שדה | ברירת מחדל | תיאור |
|---|---|---|
exclude_paths |
רשימה של תבניות נתיבים במערכת הקבצים שצריך להחריג מהקבוצה שתואמת ל-include_paths. |
|
include_paths |
רשימה של נתיבי מערכת קבצים לקריאה על ידי מעקב אחרי כל קובץ. אפשר להשתמש בתו כללי לחיפוש (*) בנתיבים. |
|
record_log_file_path |
false |
אם הערך הוא true, הנתיב לקובץ הספציפי שממנו נלקחה רשומת היומן מופיע ברשומת היומן של הפלט כערך של התווית agent.googleapis.com/log_file_path. כשמשתמשים בתו כללי, רק הנתיב של הקובץ שממנו התקבל הרשומה מתועד. |
type |
הערך חייב להיות vault_audit. |
|
wildcard_refresh_interval |
60s |
המרווח שבו נתיבי קבצים עם תו כללי ב-include_paths מתעדכנים. הערך מוצג כמשך זמן, לדוגמה 30s או 2m. הנכס הזה יכול להיות שימושי כשקצב העברת הנתונים של הרישום גבוה, וקובצי היומן מתחלפים מהר יותר מהמרווח שמוגדר כברירת מחדל. |
מה נרשם ביומן
הערך של logName נגזר ממזהי המקלט שצוינו בהגדרה. אלה השדות המפורטים שבתוך LogEntry:
יומני vault_audit מכילים את השדות הבאים ב-LogEntry:
| שדה | סוג | תיאור |
|---|---|---|
jsonPayload.auth |
struct | |
jsonPayload.auth.accessor |
מחרוזת | זהו HMAC של אמצעי הגישה לאסימון הלקוח. |
jsonPayload.auth.client_token |
מחרוזת | זהו HMAC של מזהה הטוקן של הלקוח. |
jsonPayload.auth.display_name |
מחרוזת | זהו השם המוצג שמוגדר על ידי התפקיד של שיטת האימות או באופן מפורש בזמן יצירת הסוד. |
jsonPayload.auth.entity_id |
מחרוזת | זהו מזהה ישות של טוקן. |
jsonPayload.auth.metadata |
אובייקט | הפרמטר הזה יכיל רשימה של צמדי מפתח/ערך של מטא-נתונים שמשויכים ל-client_token. |
jsonPayload.auth.policies |
אובייקט | התגובה תכיל רשימה של מדיניות שמשויכת ל-client_token. |
jsonPayload.auth.token_type |
מחרוזת | |
jsonPayload.error |
מחרוזת | אם התרחשה שגיאה בבקשה, הודעת השגיאה כלולה בערך של השדה הזה. |
jsonPayload.request |
struct | |
jsonPayload.request.client_token |
מחרוזת | זהו HMAC של מזהה הטוקן של הלקוח. |
jsonPayload.request.client_token_accessor |
מחרוזת | זהו HMAC של אמצעי הגישה לאסימון הלקוח. |
jsonPayload.request.data |
אובייקט | אובייקט הנתונים יכיל נתונים סודיים בצמדי מפתח/ערך. |
jsonPayload.request.headers |
אובייקט | כותרות HTTP נוספות שהלקוח מציין כחלק מהבקשה. |
jsonPayload.request.id |
מחרוזת | זהו מזהה הבקשה הייחודי. |
jsonPayload.request.namespace.id |
מחרוזת | |
jsonPayload.request.operation |
מחרוזת | זהו סוג הפעולה שמתאים ליכולות הנתיב, והוא צריך להיות אחד מהערכים הבאים: create, read, update, delete או list. |
jsonPayload.request.path |
מחרוזת | נתיב Vault שנדרש לפעולה. |
jsonPayload.request.policy_override |
בוליאני | ההודעה הזו מוצגת true כשמתבקשת עקיפה של מדיניות שהיא חובה רכה. |
jsonPayload.request.remote_address |
מחרוזת | כתובת ה-IP של הלקוח ששולח את הבקשה. |
jsonPayload.request.wrap_ttl |
מחרוזת | אם האסימון עטוף, מוצג כאן ערך ה-TTL העטוף שהוגדר כמחרוזת מספרית. |
jsonPayload.response |
struct | |
jsonPayload.response.data.accessor |
מחרוזת | זהו HMAC של אמצעי הגישה לאסימון הלקוח. |
jsonPayload.response.data.creation_time |
מחרוזת | חותמת הזמן של יצירת האסימון בפורמט RFC 3339. |
jsonPayload.response.data.creation_ttl |
מחרוזת | משך הזמן ל-TTL של יצירת האסימון בשניות. |
jsonPayload.response.data.display_name |
מחרוזת | זהו השם המוצג שמוגדר על ידי התפקיד של שיטת האימות או באופן מפורש בזמן יצירת הסוד. |
jsonPayload.response.data.entity_id |
מחרוזת | זהו מזהה ישות של טוקן. |
jsonPayload.response.data.expire_time |
מחרוזת | חותמת זמן בפורמט RFC 3339 שמייצגת את הרגע שבו התוקף של האסימון יפוג. |
jsonPayload.response.data.explicit_max_ttl |
מחרוזת | ערך TTL מקסימלי מפורש של אסימון בשניות ("0" אם לא מוגדר). |
jsonPayload.response.data.id |
מחרוזת | זהו מזהה התגובה הייחודי. |
jsonPayload.response.data.issue_time |
מחרוזת | חותמת זמן בפורמט RFC 3339. |
jsonPayload.response.data.num_uses |
מספר | אם האסימון מוגבל למספר שימושים, הערך הזה יופיע כאן. |
jsonPayload.response.data.orphan |
בוליאני | ערך בוליאני שמייצג אם האסימון הוא יתום. |
jsonPayload.response.data.path |
מחרוזת | נתיב Vault שנדרש לפעולה. |
jsonPayload.response.data.policies |
אובייקט | התגובה תכיל רשימה של מדיניות שמשויכת ל-client_token. |
jsonPayload.response.data.renewable |
בוליאני | ערך בוליאני שמייצג אם האסימון הוא יתום. |
jsonPayload.type |
מחרוזת | סוג יומן הביקורת. |
severity |
מחרוזת (LogSeverity) |
רמת רשומת היומן (מתורגמת). |
הגדרת איסוף מדדים
כדי להטמיע מדדים מ-Vault, צריך ליצור מקלט למדדים ש-Vault מייצר, ואז ליצור צינור למקלט החדש.
המקלט הזה לא תומך בשימוש בכמה מופעים בהגדרה, למשל כדי לעקוב אחרי כמה נקודות קצה. כל המקרים האלה נרשמים באותה סדרת זמן, ול-Cloud Monitoring אין דרך להבחין ביניהם.
כדי להגדיר נמען למדדים של vault, צריך לציין את השדות הבאים:
| שדה | ברירת מחדל | תיאור |
|---|---|---|
ca_file |
הנתיב לאישור CA. בתור לקוח, הוא מאמת את אישור השרת. אם העמודה ריקה, המקבל משתמש ב-CA הבסיסי של המערכת. | |
cert_file |
נתיב לאישור TLS לשימוש בחיבורים שנדרש בהם mTLS. | |
collection_interval |
60s |
ערך של משך זמן, כמו 30s או 5m. |
endpoint |
localhost:8200 |
הערך hostname:port שמשמש את Vault. |
insecure |
true |
הגדרה שקובעת אם להשתמש בחיבור TLS מאובטח. אם המדיניות מוגדרת לערך false, פרוטוקול TLS מופעל. |
insecure_skip_verify |
false |
ההגדרה קובעת אם לדלג על אימות האישור או לא. אם הערך של insecure הוא true, המערכת לא משתמשת בערך insecure_skip_verify. |
key_file |
הנתיב למפתח ה-TLS שבו יש להשתמש לחיבורים שנדרש בהם mTLS. | |
metrics_path |
/v1/sys/metrics |
הנתיב לאיסוף מדדים. |
token |
localhost:8200 |
טוקן שמשמש לאימות. |
type |
הערך חייב להיות vault. |
מה נבדק
בטבלה הבאה מפורטים המדדים שנאספים על ידי סוכן תפעול ממופע Vault.
| סוג המדד | |
|---|---|
| סוג, סוג משאבים במעקב |
תוויות |
workload.googleapis.com/vault.audit.request.failed
|
|
CUMULATIVE, INT64gce_instance |
|
workload.googleapis.com/vault.audit.response.failed
|
|
CUMULATIVE, INT64gce_instance |
|
workload.googleapis.com/vault.core.leader.duration
|
|
GAUGE, DOUBLEgce_instance |
|
workload.googleapis.com/vault.core.request.count
|
|
GAUGE, INT64gce_instance |
cluster
|
workload.googleapis.com/vault.memory.usage
|
|
GAUGE, DOUBLEgce_instance |
|
workload.googleapis.com/vault.storage.operation.delete.count
|
|
CUMULATIVE, INT64gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.delete.time
|
|
CUMULATIVE, DOUBLEgce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.get.count
|
|
CUMULATIVE, INT64gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.get.time
|
|
CUMULATIVE, DOUBLEgce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.list.count
|
|
CUMULATIVE, INT64gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.list.time
|
|
CUMULATIVE, DOUBLEgce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.put.count
|
|
CUMULATIVE, INT64gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.put.time
|
|
CUMULATIVE, DOUBLEgce_instance |
storage
|
workload.googleapis.com/vault.token.count
|
|
GAUGE, INT64gce_instance |
clusternamespace
|
workload.googleapis.com/vault.token.lease.count
|
|
GAUGE, INT64gce_instance |
|
workload.googleapis.com/vault.token.renew.time
|
|
GAUGE, INT64gce_instance |
|
workload.googleapis.com/vault.token.revoke.time
|
|
GAUGE, INT64gce_instance |
|
אימות ההגדרה
בקטע הזה מוסבר איך לוודא שהגדרתם את מקבל הנתונים ב-Vault בצורה נכונה. יכול להיות שיעברו דקה או שתיים עד שהסוכן של Ops יתחיל לאסוף נתוני טלמטריה.
כדי לוודא שיומני Vault נשלחים אל Cloud Logging, מבצעים את הפעולות הבאות:
-
במסוף Google Cloud , נכנסים לדף Logs Explorer:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.
- מזינים את השאילתה הבאה בעורך ולוחצים על Run query:
resource.type="gce_instance" log_id("vault_audit")
כדי לוודא שהמדדים של Vault נשלחים ל-Cloud Monitoring, מבצעים את הפעולות הבאות:
-
נכנסים לדף leaderboard Metrics explorer במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
- בסרגל הכלים של החלונית ליצירת שאילתות, לוחצים על הלחצן ששמו code PromQL.
- מזינים את השאילתה הבאה בעורך ולוחצים על Run query:
{"workload.googleapis.com/vault.memory.usage", monitored_resource="gce_instance"}
צפייה בלוח הבקרה
כדי לראות את המדדים של Vault, צריך להגדיר תרשים או לוח בקרה. השילוב של Vault כולל לוח בקרה אחד או יותר. כל מרכזי הבקרה מותקנים אוטומטית אחרי שמגדירים את השילוב וסוכן Ops מתחיל לאסוף נתונים של מדדים.
אפשר גם לראות תצוגות מקדימות סטטיות של מרכזי בקרה בלי להתקין את השילוב.
כדי לראות מרכז בקרה שהותקן:
-
במסוף Google Cloud , עוברים לדף Dashboards:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
- לוחצים על הכרטיסייה רשימת לוחות הבקרה ואז בוחרים בקטגוריה שילובים.
- לוחצים על השם של מרכז הבקרה שרוצים להציג.
אם הגדרתם שילוב אבל לוח הבקרה לא הותקן, צריך לבדוק שסוכן תפעול פועל. אם אין נתוני מדדים לתרשים במרכז הבקרה, ההתקנה של מרכז הבקרה נכשלת. אחרי שסוכן התפעול מתחיל לאסוף מדדים, לוח הבקרה מותקן בשבילכם.
כדי לראות תצוגה מקדימה סטטית של מרכז הבקרה:
-
נכנסים לדף
Integrations במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
- לוחצים על המסנן Compute Engine של פלטפורמת הפריסה.
- מאתרים את הרשומה של Vault ולוחצים על הצגת פרטים.
- לוחצים על הכרטיסייה מרכזי בקרה כדי לראות תצוגה מקדימה סטטית. אם מרכז הבקרה מותקן, אפשר לעבור אליו בלחיצה על View dashboard (הצגת מרכז הבקרה).
מידע נוסף על לוחות בקרה ב-Cloud Monitoring זמין במאמר בנושא לוחות בקרה וטבלאות.
מידע נוסף על השימוש בדף Integrations (שילובים) זמין במאמר ניהול שילובים.
התקנה של כללי מדיניות התראות
מדיניות התראות מורה ל-Cloud Monitoring לשלוח לכם התראה כשמתרחשים תנאים מסוימים. השילוב של Vault כולל מדיניות התראות אחת או יותר שתוכלו להשתמש בהן. אפשר לראות ולהתקין את מדיניות ההתראות הזו בדף שילובים ב-Monitoring.
כדי לראות את התיאורים של כללי מדיניות ההתראות הזמינים ולהתקין אותם:
-
נכנסים לדף
Integrations במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
- מאתרים את הרשומה של Vault ולוחצים על הצגת פרטים.
- לוחצים על הכרטיסייה התראות. בכרטיסייה הזו מופיעים תיאורים של מדיניות ההתראות הזמינה וממשק להתקנתן.
- התקנה של כללי מדיניות התראות. כדי שמדיניות ההתראות תדע לאן לשלוח התראות על הפעלה של התראה, היא צריכה לקבל מכם מידע להתקנה.
כדי להתקין מדיניות התראות:
- ברשימת מדיניות ההתראות הזמינה, בוחרים את אלה שרוצים להתקין.
בקטע הגדרת התראות, בוחרים ערוץ התראות אחד או יותר. יש לכם אפשרות להשבית את השימוש בערוצי התראות, אבל אם תעשו את זה, מדיניות ההתראות שלכם תופעל בשקט. אפשר לבדוק את הסטטוס שלהם בדף 'מעקב', אבל לא תקבלו התראות.
מידע נוסף על ערוצי התראות זמין במאמר בנושא ניהול ערוצי התראות.
- לוחצים על יצירת מדיניות.
למידע נוסף על מדיניות התראות ב-Cloud Monitoring, אפשר לעיין במאמר מבוא להתראות.
מידע נוסף על השימוש בדף Integrations (שילובים) זמין במאמר ניהול שילובים.
המאמרים הבאים
בסרטון Install the Ops Agent to troubleshoot third-party applications מוסבר איך להשתמש ב-Ansible כדי להתקין את סוכן תפעול, להגדיר אפליקציית צד שלישי ולהתקין לוח בקרה לדוגמה.