Skip to content

Access Keys

Access Keys מאמתים עבודת data-plane (Object Storage, Message Queues, Secrets, Image Registry, ריצה של SDK/CLI) וגם ניהול פרוגרמטי של ה-console API (Terraform / CI — Terraform).

הם לא סיסמת הקונסול. צרו אותם פעם אחת, שמרו את ה-secret בבטחה, והשתמשו בהם ב-CI ובשרתים. בקשות חתומות עם Access Key לא מבקשות MFA.

יצירת מפתח בקונסול

  1. פתחו IAM → Users → [user] → Access keys, או את המלאי IAM → Access Keys.
  2. לכל יוזר יש מפתח פעיל אחד. אם כבר יש מפתח, השתמשו ב-Rotate (מנפיק זוג חדש ומבטל מיד את כל המפתחות הפעילים הקודמים של אותו יוזר).
  3. העתיקו פעם אחת:

  4. Access Key ID — מתחיל ב-HCAK…

  5. Secret access key — מוצג רק ביצירה/החלפה

הטבלה מציגה משתמש, שם, נוצר, שימוש אחרון, סטטוס. ה-HCAK לא נשאר מוצג ברשימה.

ההרשאות מגיעות מ-IAM של היוזר, לא מהמפתח. מפתחות עודפים בחשבונות ישנים ממשיכים לעבוד עד שמחליפים למשתמש הזה.

אם איבדתם את ה-secret, החליפו (או בטלו) את המפתח. לא ניתן לשחזר את ה-secret.

הגדרת ה-CLI

homecloud configure

הזינו Access Key ID, secret ודומיין apex כשמתבקשים. האישורים נשמרים תחת ~/.homecloud/credentials (JSON מרובה־פרופילים).

export HOMECLOUD_ACCESS_KEY_ID=HCAK...
export HOMECLOUD_SECRET_ACCESS_KEY=...
export HOMECLOUD_APEX=holab.abrdns.com

הצורות הקצרות HC_ACCESS_KEY_ID, HC_SECRET_ACCESS_KEY, HC_APEX גם עובדות.

homecloud --access-key-id HCAK... --secret-access-key '...' so ls media
homecloud configure import credentials.json

שימוש מה-SDK

from homecloud import HomeCloud

client = HomeCloud(
    access_key="HCAK...",
    secret_key="...",
)
# or: HomeCloud.from_env()
# or: HomeCloud()  # reads ~/.homecloud/credentials
const { HomeCloud } = require("@homecloud-platform/sdk");

const client = new HomeCloud({
  accessKeyId: process.env.HC_ACCESS_KEY_ID,
  secretAccessKey: process.env.HC_SECRET_ACCESS_KEY,
  apex: process.env.HC_APEX,
});

הרשאה מינימלית (מומלץ)

העדיפו מדיניות מוגבלת על פני * בפרודקשן. דוגמה: לאפשר למפתח פריסה לעדכן רק bucket אחד של אתר סטטי:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["so:ListBucket", "so:PutObject", "so:DeleteObject"],
      "Resource": [
        "arn:holab:so:::my-website",
        "arn:holab:so:::my-website/*"
      ]
    }
  ]
}

צירפו מדיניות דרך IAM → Policies / Roles. ראו IAM לתפקידים, מתחילי מדיניות מנוהלת, ואיך Functions מניחים תפקידים.

התחברות לקונסול מול Access Key

משימה השתמשו ב
יצירת bucket או תור בממשק סשן קונסול
homecloud queues list / homecloud so ls-buckets homecloud login (JWT)
homecloud so cp / so sync / mq send Access Key
פריסת אתר סטטי ב-CI Access Key ב-secrets של GitHub Actions
פרוויז'ן Terraform של תורים / באקטים / סודות מ-CI Access Key הקשור למשתמש, או GitHub OIDC (HC_ROLE_ARN) — Terraform
גלישה יומיומית בדפדפן סשן קונסול + MFA

לעיתים קרובות משתמשים בשניהם: login לרשימות ניהול, Access Key להעברות.

ל-Terraform ב-GitHub Actions העדיפו OIDC על פני HC_SECRET_ACCESS_KEY ארוך-טווח ב-GitHub Secrets. הספק מחליף JWT של GitHub ב-POST /api/v1/sts/assume-role-with-web-identity. ראו Terraform — GitHub OIDC.

לעולם אל תעלו סודות ל-git

אל תשימו secret של Access Key ב-git. השתמשו במאגר הסודות של ה-CI (GitHub Actions secrets וכו'), או דלגו על הסוד הארוך-טווח לגמרי עם GitHub OIDC ל-Terraform.

פתרון בעיות

תסמין מה לנסות
401 / unauthorized ב-so / mq מפתח/secret שגויים, או מפתח שבוטל; הריצו מחדש homecloud configure
403 / permission denied מדיניות המפתח צרה מדי; בדקו מדיניות IAM
עובד בקונסול אבל ה-CLI נכשל קריאת ניהול דורשת homecloud login; קריאת data-plane דורשת Access Key
מפתח ישן אחרי flush ל-Redis של הפלטפורמה מפתחות חיים במסד הנתונים; המטמון נבנה מחדש אוטומטית. אם מפתח ישן מאוד קדם להעברת הצפנה, בטלו וצרו מחדש

קשור