VK Cloud logo

ACL

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

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

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

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

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

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

  • <Owner> — бакет немесе объект орналасқан жобаның идентификаторын (ID) және атауын (DisplayName) қамтиды. ID және DisplayName мәндерін алу үшін бакеттің 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 Object Storage сервисіндегі түрі CanonicalUser болатын жалғыз қол жеткізу құқықтарын алушы. Ол барлық бакеттер мен объектілерге FULL_CONTROL құқығымен автоматты түрде тағайындалады және иесімен толығымен сәйкес келеді. Бұл алушыны жою немесе өзгерту мүмкін емес. VK Cloud жобасына берілген құқықтар жоба ішіндегі барлық VK Object Storage есептік жазбаларына қолданылады.

Метатоп

Алдын ала анықталған метатоп — VK Object Storage сервисіндегі түрі Group болатын қол жеткізу құқықтарын алушы, ол VK Cloud жобасынан тыс екі пайдаланушы санатына жеке құқықтар беруге мүмкіндік береді.

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

    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 конфигурациясын орнатқан кезде, алдыңғы конфигурация жойылады. Бұған жол бермеу үшін қолжетімділік құқықтарын барлық қажетті алушылар санаттарына бір уақытта орнату ұсынылады.

Бір сұрауда рұқсаттарды бір уақытта орнатуға арналған 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>
Мақала пайдалы болды ма?