{"id":35090,"date":"2025-09-22T09:18:23","date_gmt":"2025-09-22T02:18:23","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2025\/09\/22\/tao-object-storage-key-truy-cap-gioi-han-limited-access\/"},"modified":"2025-09-22T09:18:23","modified_gmt":"2025-09-22T02:18:23","slug":"tao-object-storage-key-truy-cap-gioi-han-limited-access","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2025\/09\/22\/tao-object-storage-key-truy-cap-gioi-han-limited-access\/","title":{"rendered":"T\u1ea1o\u00a0<em>Object Storage key<\/em>\u00a0truy c\u1eadp\u00a0<strong>gi\u1edbi h\u1ea1n<\/strong>\u00a0(Limited Access)"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html lang=\"vi\"><br \/>\n<head><br \/>\n  <meta charset=\"utf-8\" \/><br \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/><br \/>\n  <title>T\u1ea1o Object Storage Key truy c\u1eadp gi\u1edbi h\u1ea1n (Limited Access)<\/title><\/p>\n<style>\n    :root{\n      --bg:#ffffff;\n      --card:#f9f9fb;\n      --text:#1a1a1a;\n      --muted:#555;\n      --accent:#0066cc;\n      --border:#ddd;\n      --code:#f5f5f5;\n      --green:#16a34a;\n      --warn:#b45309;\n      --warnbg:#fff7ed;\n    }\n    *{box-sizing:border-box}\n    body{margin:0;background:var(--bg);color:var(--text);\n      font:16px\/1.6 system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;}\n    .wrap{max-width:980px;margin:48px auto;padding:0 20px 60px}\n    header h1{font-size:clamp(22px,4vw,34px);margin:0 0 8px}\n    header p{color:var(--muted);margin:0 0 24px}\n    .label{display:inline-block;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);border:1px solid var(--border);border-radius:999px;padding:4px 10px;background:#fff;margin-bottom:8px}\n    .card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:24px;margin-bottom:18px}\n    h2{font-size:22px;margin:10px 0 12px}\n    h3{font-size:18px;margin:20px 0 8px;color:var(--accent)}\n    pre{padding:14px 16px;background:var(--code);border:1px solid var(--border);border-radius:12px;overflow:auto;margin:10px 0 0}\n    code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;font-size:14px}\n    ul{margin:0 0 0 20px}\n    .note{border-left:4px solid var(--accent);background:#eef6ff;padding:12px 14px;border-radius:8px;margin-top:12px}\n    .warn{border-left:4px solid var(--warn);background:var(--warnbg);padding:12px 14px;border-radius:8px;margin-top:12px;color:#5b3a0f}\n    .success{color:var(--black);font-weight:600}\n    a{color:var(--accent);text-decoration:none}\n    a:hover{text-decoration:underline}\n    footer{margin-top:30px;color:var(--muted);font-size:14px}\n  <\/style>\n<p><\/head><br \/>\n<body><\/p>\n<div class=\"wrap\">\n<header>\n<h1>T\u1ea1o <em>Object Storage key<\/em> truy c\u1eadp <strong>gi\u1edbi h\u1ea1n<\/strong> (Limited Access)<\/h1>\n<p>Kh\u00f3a gi\u1edbi h\u1ea1n ch\u1ec9 cho ph\u00e9p truy c\u1eadp c\u00e1c bucket c\u1ee5 th\u1ec3 t\u1ea1i c\u00e1c region c\u1ee5 th\u1ec3.<\/p>\n<\/header>\n<section class=\"card\">\n<h2>Quy tr\u00ecnh<\/h2>\n<ol>\n<li>\n<h3>B\u01b0\u1edbc 1 \u2014 Li\u1ec7t k\u00ea c\u00e1c bucket v\u00e0 l\u01b0u l\u1ea1i <code>label<\/code> &amp; <code>region<\/code><\/h3>\n<p>G\u1ecdi API <strong>List Object Storage buckets<\/strong> v\u00e0 l\u01b0u th\u00f4ng tin cho c\u00e1c bucket b\u1ea1n mu\u1ed1n th\u00eam v\u00e0o kh\u00f3a.<\/p>\n<pre><code>{\n  \"data\": [\n    {\n      \"cluster\": \"us-east-1\",\n      \"created\": \"2023-01-05T01:23:45\",\n      \"endpoint_type\": \"E1\",\n      \"hostname\": \"primary-bucket-1.us-east-12.linodeobjects.com\",\n      \"label\": \"primary-bucket\", &lt;== L\u01b0u\n      \"objects\": 4,\n      \"region\": \"us-east\",        &lt;== L\u01b0u\n      ...\n    },\n    {\n      \"cluster\": \"us-iad-1\",\n      \"created\": \"2024-01-01T11:45:37\",\n      \"endpoint_type\": \"E1\",\n      \"hostname\": \"backup-bucket-1.us-east-12.linodeobjects.com\",\n      \"label\": \"backup-bucket\",   &lt;== L\u01b0u\n      \"objects\": 4,\n      \"region\": \"us-iad\",         &lt;== L\u01b0u\n      ...\n    }\n  ],\n  \"page\": 1,\n  \"pages\": 1,\n  \"results\": 2\n}<\/code><\/pre>\n<\/li>\n<li>\n<h3>B\u01b0\u1edbc 2 \u2014 T\u1ea1o kh\u00f3a <em>Limited Access<\/em> v\u1edbi <code>bucket_access<\/code><\/h3>\n<p>G\u1ecdi API <strong>Create an Object Storage key<\/strong> v\u00e0 truy\u1ec1n m\u1ea3ng <code>bucket_access<\/code> \u0111\u1ec3 ch\u1ec9 \u0111\u1ecbnh quy\u1ec1n truy c\u1eadp theo t\u1eebng bucket.<\/p>\n<pre><code>{\n  \"label\": \"Limited OBJ Access - Primary and Backup\",\n  \"bucket_access\": [\n    {\n      \"bucket_name\": \"primary-bucket\",\n      \"permissions\": \"read_write\",\n      \"region\": \"us-east\"\n    },\n    {\n      \"bucket_name\": \"backup-bucket\",\n      \"permissions\": \"read_only\",\n      \"region\": \"us-iad\"\n    }\n  ]\n}<\/code><\/pre>\n<ul>\n<li><strong>label<\/strong>: T\u00ean d\u1ec5 nh\u1eadn bi\u1ebft cho kh\u00f3a.<\/li>\n<li><strong>bucket_access<\/strong>: Danh s\u00e1ch c\u00e1c m\u1ee5c cho t\u1eebng bucket m\u00e0 kh\u00f3a \u0111\u01b0\u1ee3c ph\u00e9p truy c\u1eadp:\n<ul>\n<li><code>bucket_name<\/code>: <em>label<\/em> c\u1ee7a bucket \u0111\u00e3 l\u01b0u \u1edf B\u01b0\u1edbc 1.<\/li>\n<li><code>permissions<\/code>: <code>read_write<\/code> (qu\u1ea3n l\u00fd n\u1ed9i dung) ho\u1eb7c <code>read_only<\/code> (ch\u1ec9 xem n\u1ed9i dung).<\/li>\n<li><code>region<\/code>: <em>region<\/em> \u0111\u00e3 l\u01b0u \u1edf B\u01b0\u1edbc 1 cho bucket t\u01b0\u01a1ng \u1ee9ng.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"note\">\n            Kh\u00f3a gi\u1edbi h\u1ea1n <strong>kh\u00f4ng c\u1ea7n<\/strong> tr\u01b0\u1eddng <code>regions<\/code> \u1edf c\u1ea5p cha. H\u00e3y b\u1ecf qua tr\u01b0\u1eddng n\u00e0y trong workflow n\u00e0y.\n          <\/div>\n<div class=\"warn\">\n            L\u01b0u \u00fd: H\u00e3y \u0111\u1ea3m b\u1ea3o <code>region<\/code> kh\u1edbp ch\u00ednh x\u00e1c v\u1edbi bucket t\u01b0\u01a1ng \u1ee9ng; n\u1ebfu kh\u00f4ng, API s\u1ebd tr\u1ea3 l\u1ed7i do kh\u00f4ng t\u00ecm th\u1ea5y bucket \u1edf region \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh.\n          <\/div>\n<\/li>\n<\/ol>\n<\/section>\n<section class=\"card\">\n<h2>K\u1ebft qu\u1ea3 cu\u1ed1i c\u00f9ng<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng kh\u00f3a \u0111\u1ec3 truy c\u1eadp v\u00e0 qu\u1ea3n l\u00fd n\u1ed9i dung trong c\u00e1c bucket \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh theo <code>permissions<\/code> \u0111\u00e3 thi\u1ebft l\u1eadp.<\/p>\n<p>Kh\u00f3a n\u00e0y c\u0169ng cho ph\u00e9p b\u1ea1n <strong>list<\/strong> v\u00e0 <strong>create<\/strong> bucket m\u1edbi trong <em>c\u00e1c region<\/em> \u0111\u01b0\u1ee3c \u0111\u01b0a v\u00e0o m\u1ea3ng <code>bucket_access<\/code>.<\/p>\n<p class=\"success\">\ud83d\udc4d C\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh th\u00eam <em>bucket policies<\/em> \u0111\u1ec3 qu\u1ea3n tr\u1ecb quy\u1ec1n chi ti\u1ebft cho t\u1eebng bucket.<\/p>\n<p>T\u00e0i li\u1ec7u tham kh\u1ea3o v\u1ec1 bucket policies:<br \/>\n        <a href=\"https:\/\/techdocs.akamai.com\/cloud-computing\/docs\/define-access-and-permissions-using-bucket-policies\" target=\"_blank\" rel=\"noopener\"><br \/>\n          Akamai Cloud Computing Docs \u2014 Bucket Policies<br \/>\n        <\/a>\n      <\/p>\n<\/section><\/div>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u1ea1o Object Storage Key truy c\u1eadp gi\u1edbi h\u1ea1n (Limited Access) T\u1ea1o Object Storage key truy c\u1eadp gi\u1edbi h\u1ea1n (Limited Access) Kh\u00f3a gi\u1edbi h\u1ea1n ch\u1ec9 cho ph\u00e9p truy c\u1eadp c\u00e1c bucket c\u1ee5 th\u1ec3 t\u1ea1i c\u00e1c region c\u1ee5 th\u1ec3. Quy tr\u00ecnh B\u01b0\u1edbc 1 \u2014 Li\u1ec7t k\u00ea c\u00e1c bucket v\u00e0 l\u01b0u l\u1ea1i label &amp; region G\u1ecdi API List<\/p>\n","protected":false},"author":1,"featured_media":36540,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[119],"tags":[],"class_list":["post-35090","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-object-storage-api-workflows"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35090","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=35090"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35090\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36540"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=35090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=35090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=35090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}