VK Cloud logo

ACL

ACL (Access Control List, қол жеткізуді басқару тізімі) VK Object Storage сервисінде қандай пайдаланушыларға қандай операциялар рұқсат етілгенін бақылауға мүмкіндік береді. Әрбір бакет пен объектінің өз ACL-і бар, онда қол жеткізу құқықтарын алушылар және оларға берілген рұқсаттар көрсетіледі.

ACL бар бакеттер мен объектілерге операциялар жасау үшін келесі API әдістері қолжетімді:

ACL-ді бакет жасағанда немесе объект жүктегенде де, кейін де орнатуға болады. PutBucketACL және PutObjectACL әдістерінде ACL конфигурациясын екі тәсілмен беруге болады:

Бір сұрауда осы тәсілдердің тек біреуін ғана пайдалануға болады.

ACL конфигурациясының XML-құрылымы

XML форматындағы ACL конфигурациясы келесі элементтерден тұрады:

  • <Owner> — бакет иесінің канондық идентификаторын көрсетеді. Оны GetBucketACL әдісі арқылы немесе AWS CLI арқылы, сұратып бакеттің ACL-і туралы ақпаратты алу арқылы біліңіз.

  • <Grant> — қай алушыға қандай рұқсаттар берілетінін анықтайды. <Grant> ішінде <Grantee> және <Permission> элементтері болады.

    • <Grantee> — қол жеткізу құқықтарын алушыны атрибуттар арқылы көрсетеді:

    • <Permission> — берілетін рұқсаттың түрін көрсетеді.

ACL конфигурациясының XML-құрылымының мысалы:

<AccessControlPolicy>  <Owner>    <ID>Owner-canonical-user-ID</ID>    <DisplayName>owner-display-name</DisplayName>  </Owner>  <AccessControlList>    <Grant>      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">        <ID>Owner-canonical-user-ID</ID>        <DisplayName>owner-display-name</DisplayName>      </Grantee>      <Permission>FULL_CONTROL</Permission>    </Grant>  </AccessControlList></AccessControlPolicy>

Сұрау тақырыптары

PUT сұрауларында ACL конфигурациясын көрсету үшін келесі тақырыптар қолданылады:

  • x-amz-acl — бакетке немесе объектіге алдын ала бапталған стандартты ACL тағайындайды.
  • x-amz-grant-read — оқу рұқсатын (READ) орнатады.
  • x-amz-grant-write — жазу рұқсатын (WRITE) орнатады.
  • x-amz-grant-read-acp — ACL-ді оқу рұқсатын (READ_ACP) орнатады.
  • x-amz-grant-write-acp — ACL-ді жазу рұқсатын (WRITE_ACP) орнатады.
  • x-amz-grant-full-control — толық бақылау береді (FULL_CONTROL).

x-amz-acl тақырыбын бір сұрауда осы тізімдегі басқа тақырыптармен біріктіруге болмайды. Не стандартты ACL-ді пайдалануға, не құқықтарды алушыларды ашық түрде көрсетуге болады.

Қол жеткізуді алушылар

Бакеттер мен объектілерге қол жеткізу құқықтары келесі алушылар санаттарына берілуі мүмкін:

Пайдаланушы

VK Cloud пайдаланушысына қол жеткізу оның канондық идентификаторы (Canonical ID) бойынша беріледі. Бұл — VK Object Storage пайдаланушысының бірегей идентификаторы, әріптік-сандық тізбек түрінде болады. Мысал: fcd68908-XXXX-82ae2a5a251d.

VK Cloud пайдаланушысының канондық идентификаторын білу үшін, ACL-ді алыңыз — пайдаланушының қол жеткізу құқықтары бар бакет немесе объект үшін.

Пайдаланушыға қол жеткізуді беру үшін, сұрауда оның канондық идентификаторын көрсетіңіз:

  • XML-құрылым арқылы орнатқанда Grantee блогының ішінде <ID> тегін көрсетіңіз.

    Мысал: <ID>fcd68908-XXXX-82ae2a5a251d</ID>

  • Тақырып арқылы орнатқанда оның мәнінде id кілтін пайдаланыңыз.

    Мысал: id="fcd68908-XXXX-82ae2a5a251d".

Жоба

Жобаға қол жеткізуді беру үшін, сұрауда жоба идентификаторын (PID) көрсетіңіз.

  • XML-құрылым арқылы орнатқанда Grantee блогының ішінде <EmailAddress> тегін көрсетіңіз.

    Мысал: <EmailAddress>mcs2400549523</EmailAddress>

  • Тақырып арқылы орнатқанда оның мәнінде emailAddress кілтін пайдаланыңыз.

    Мысал: emailAddress="mcs2400549523".

Метатоп

VK Object Storage сервисінде алдын ала анықталған метатоптар жиынтығы бар. Пайдаланушылар тобына қол жеткізуді беру үшін, сұрауда топтың URI мәнін көрсетіңіз.

  • Authenticated Users (авторизацияланған пайдаланушылар). VK Cloud жүйесіндегі барлық бар есептік жазбаларды қамтиды.

    Authenticated Users тобына қол жеткізуді беру үшін:

    • XML-құрылым арқылы орнатқанда Grantee блогының ішінде <URI> тегін көрсетіңіз.

      Мысал: <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI>

    • Тақырып арқылы орнатқанда оның мәнінде uri кілтін пайдаланыңыз.

      Мысал: uri="http://acs.amazonaws.com/groups/global/AuthenticatedUsers"

  • All Users (барлық пайдаланушылар).

    All Users тобына қол жеткізуді беру үшін:

    • XML-құрылым арқылы орнатқанда Grantee блогының ішінде <URI> тегін көрсетіңіз.

      Мысал: <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>

    • Тақырып арқылы орнатқанда оның мәнінде uri кілтін пайдаланыңыз.

      Мысал: uri="http://acs.amazonaws.com/groups/global/AllUsers"

    Қол жеткізу берілген анонимді авторизацияланбаған пайдаланушылар VK Cloud жүйесінде есептік жазбасы болмағандықтан, 65a011a29cdf8ec533ec3d1ccaae921c пайдаланушысының канондық ID-і атынан әрекеттер орындайды.

Рұқсаттар

Кестеде VK Object Storage ACL ішінде қолдайтын рұқсат түрлері келтірілген. Әрбір рұқсат үшін оның қандай құқықтар беретіндігі және бакетте және объектіде берілген кезде қандай операцияларды орындауға рұқсат ететіні көрсетілген.

ACL рұқсаты

Бакет үшін берілген

Объект үшін берілген

READ

Бакеттегі объектілер тізімін алу

HeadBucket, ListMultiparts, ListObjects, ListParts

Объект мазмұнын және оның метадеректерін оқу

GetObject, HeadObject

WRITE

Бакеттегі кез келген объектіні жасау, қайта жазу және жою

AbortMultipartUpload, CompleteMultipartUpload, InitiateMultipartUpload, UploadPart, PutObject, DeleteObject

Қолданылмайды

READ_ACP

Бакеттің ACL-ін оқу

GetBucketAcl

Объектінің ACL-ін оқу

GetObjectAcl

WRITE_ACP

Бакет үшін ACL орнату

PutBucketAcl

Объект үшін ACL орнату

PutObjectAcl

FULL_CONTROL

Бакетке арналған рұқсаттар шеңберіндегі барлық құқықтар: READ, WRITE, READ_ACP және WRITE_ACP

Объектіге арналған рұқсаттар шеңберіндегі барлық құқықтар: READ, READ_ACP және WRITE_ACP

GetBucketACL

Бакет үшін ACL-ді алу. Алу үшін бакетте READ_ACP құқығы болуы қажет.

Егер READ_ACP құқығы анонимді пайдаланушыға берілсе, авторизация тақырыбын пайдаланбай-ақ бакеттің ACL-ін алуға болады.

Сұрау мысалы:

GET /?acl HTTP/1.1Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855x-amz-date: 20200831T174434ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=71dfa4666fb740d40d05307a29321c65cc620cdb17e8a9cb83d4f0e1b1b9d236

Жауап мысалы:

HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 17:44:35 GMTx-amz-request-id: tx000000000000002764fa6-005963bd03-1268c-ru-mskaContent-Type: application/xmlContent-Length: 848Connection: close<?xml version="1.0" encoding="UTF-8"?>  <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">    <Owner>      <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>      <DisplayName>VK Cloud_UserName</DisplayName>    </Owner>    <AccessControlList>      <Grant>        <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">          <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>        </Grantee>        <Permission>READ</Permission>      </Grant>      <Grant>        <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">          <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>          <DisplayName>VK Cloud_Username</DisplayName>        </Grantee>        <Permission>FULL_CONTROL</Permission>      </Grant>    </AccessControlList>  </AccessControlPolicy>

PutBucketACL

Бакет үшін ACL-ді орнату. ACL-ді орнату үшін бакетте WRITE_ACP құқығы болуы қажет.

ACL конфигурациясын сұрау денесінде беру арқылы жасалатын сұрау:

PUT /?acl HTTP/1.1Content-Type: application/xmlContent-Length: 675Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256: 724483e3830b19d6960345c484fb7904b26e8f2fb34a6c002fa779353b68c8d8x-amz-date: 20200831T183709ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date,Signature=1cf3f7771a4086375e5b6597026db6d55d84fbc86e3c3a86ec420ea9123e3163<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">  <Owner>    <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>  </Owner>  <AccessControlList>    <Grant>      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">        <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>      </Grantee>      <Permission>FULL_CONTROL</Permission>    </Grant>    <Grant>      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">        <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>      </Grantee>      <Permission>READ</Permission>    </Grant>  </AccessControlList></AccessControlPolicy>

Жауап мысалы:

HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 18:37:10 GMTx-amz-request-id: tx00000000000000278ac49-005963c956-1268c-ru-mskaContent-Type: application/xmlContent-Length: 0Connection: close

GetObjectACL

Объект үшін ACL-ді алу. Алу үшін объектіде READ_ACP құқығы болуы қажет.

Сұрау мысалы:

GET /sammy.png?acl HTTP/1.1Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855x-amz-date: 20200831T191224ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=950e133849cd19d626291fd2937d927957cf3e97a36707d30d51a9b61ac08a8e

Жауап мысалы:

HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 19:12:24 GMTx-amz-request-id: tx0000000000000027a42dc-005963d198-1268c-ru-mskaContent-Type: application/xmlContent-Length: 848Connection: close<?xml version="1.0" encoding="UTF-8"?>  <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">    <Owner>      <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>      <DisplayName>VK Cloud_UserName</DisplayName>    </Owner>    <AccessControlList>      <Grant>        <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">          <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>        </Grantee>        <Permission>READ</Permission>      </Grant>      <Grant>        <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">          <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>          <DisplayName>VK Cloud_UserName</DisplayName>        </Grantee>        <Permission>FULL_CONTROL</Permission>      </Grant>    </AccessControlList>  </AccessControlPolicy>

PutObjectACL

Объект үшін ACL-ді орнату. ACL-ді орнату үшін объектіде WRITE_ACP құқығы болуы қажет.

ACL конфигурациясын сұрау денесінде беру арқылы жасалатын сұрау:

PUT /sammy.png?acl HTTP/1.1Сontent-Type: application/xmlContent-Length: 443Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256:c0bd9ba784be78d4f38bbc1e3b0da2de2e7a8f4ee259b3b840369cf00a78dad2x-amz-date:20200831T192142ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date,Signature=dfeeb2386f76b29097adadb35ac15f7d5f244f18cc95f082b0ac6d14ced48b10<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">  <Owner>    <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>  </Owner>  <AccessControlList>    <Grant>      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">        <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>      </Grantee>      <Permission>FULL_CONTROL</Permission>    </Grant>  </AccessControlList></AccessControlPolicy>

Жауап мысалы:

HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 19:21:42 GMTx-amz-request-id: tx0000000000000027aafc9-005963d3c6-1268c-ru-mskaContent-Type: application/xmlContent-Length: 0Connection: close

ACL жаңарту бойынша ұсынымдар

Қол жеткізу құқықтарын тағайындау саясаты мынадай: бар бакеттің немесе объектінің ACL-ін жаңартқанда кейбір жағдайларда бұрын тағайындалған қол жеткізу құқықтары жоғалуы мүмкін. Мысалы, кез келген метатопқа қол жеткізуді беру туралы сұрау кезінде VK Cloud-тың жекелеген жобалары үшін орнатылған барлық қол жеткізу құқықтары жоғалады. Бұған жол бермеу үшін, барлық қажет алушылар санаттарына қол жеткізу құқықтарын бір уақытта орнату ұсынылады.

Бір сұрауда рұқсаттарды бір уақытта орнатуға арналған XML-құрылымның мысалы:

<?xml version="1.0" encoding="UTF-8"?><AccessControlPolicy xmlns="http://bucket_name.hb.ru-msk.vkcloud-storage.ru/images/01.jpg/">   <Owner>      <ID>Owner-canonical-user-ID</ID>      <DisplayName>owner-display-name</DisplayName>   </Owner>   <AccessControlList>      <Grant>         <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">            <ID>Owner-canonical-user-ID</ID>            <DisplayName>owner-display-name</DisplayName>         </Grantee>         <Permission>FULL_CONTROL</Permission>      </Grant>           <Grant>         <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">            <ID>user1-canonical-user-ID</ID>            <DisplayName>user1-display-name</DisplayName>         </Grantee>         <Permission>WRITE</Permission>      </Grant>           <Grant>         <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">            <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>          </Grantee>         <Permission>READ</Permission>      </Grant>      <Grant>         <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">            <EmailAddress>project-ID</EmailAddress>         </Grantee>         <Permission>READ</Permission>      </Grant>   </AccessControlList></AccessControlPolicy>