Zarządzanie użytkownikami i uprawnieniami w Atman Object Storage

Obecnie tworzenie kont w usłudze odbywa się poprzez zgłoszenie pocztą elektroniczną lub portal klienta. Klucze dostępowe do usługi można pobrać w panelu klienta.

W usłudze Atman Object Storage funkcjonują dwa rodzaje użytkowników, konto główne oraz subkonta (subuser). Konta typu subuser funkcjonują w ramach konta głównego, posiadają własne poświadczenia (klucze access i secret). Istnieją dwie możliwości ustanowienia ograniczeń do poszczególnych zasobów: poziom dostępu poszczególnych subkont do wszystkich zasobów w utworzonych w ramach konta głównego oraz polityki dostępowe definiowane na poziomie bucketów (Bucket Policies).

Uprawnienia na poziomie subkont

Istnieje możliwość utworzenia nazwanych subkont, które posiadają własne klucze dostępowe. W tym celu należy wysłać zgłoszenie pocztą elektroniczną lub poprzez panel klienta. W wiadomości prosimy o wskazanie nazw subużytkowników oraz informację o preferowanych uprawnieniach do bucketów tworzonych w ramach konta.

Typy dostępu (dotyczy wszystkich zasobów tworzonych w ramach konta):

OperacjaREADWRITEREADWRITEFULL
tworzenie bucketów
listowanie bucketów
listowanie zawartości bucketów
usuwanie bucketów
odczytywanie obiektów
zapisywanie obiektów
usuwanie obiektów
podgląd polityk bucketów (ACL i bucket policies)
przypisywanie polityk dostępowych do bucketów (ACL i bucket policies)

Konto główne posiada pełne uprawnienia do tworzonych zasobów (FULL).
Każdy użytkownik bez względu na uprawnienia nadane podczas tworzenia może wylistować buckety oraz utworzyć nowy. Właścicielem wszystkich utworzonych bucketów jest konto główne.

Separacja na poziomie bucketów (Bucket Policies)

Mechanizm Bucket Policies jest zalecanym sposobem zarządzania uprawnieniami do bucketów w ramach usługi Atman Object Storage. Polityki aplikowane są do poszczególnych bucketów. Wewnątrz każdej polityki znajduje się tablica instrukcji, a każda instrukcja zawiera następujące elementy:

Sid – opcjonalny identyfikator instrukcji. Pole umożliwia użytkownikowi wprowadzenie krótkiego opisu dla reguły. Pole to musi być unikalne w ramach tworzonej polityki. Akceptowalne znaki: a-z, A-Z, oraz 0-9.

Effect – określa, czy efektem instrukcji będzie zezwolenie czy odmowa wykonania operacji. Domyślnie dostęp do zasobu jest zabroniony. Akceptowane wartości: Allow albo Deny.

Principal/NotPrincipal – pole definiujące użytkowników, których dotyczy reguła. Użytkownicy muszą zostać zdefiniowani w formacie ARN (przykład poniżej). Znak wieloznaczności * nie jest obsługiwany. Wymagane jest ścisłe zdefiniowanie użytkowników.

"Principal": {
  "AWS": [
    "arn:aws:iam:::user/username01",
    "arn:aws:iam:::user/username01:subuser01" 
  ]
}

Action/NotAction – pole definiuje dozwolone lub zabronione akcje. Lista dostępnych akcji znajduje się poniżej.

Resource – zasób, dla którego nadawane są uprawnienia; bucket lub obiekt.

Condition – element opcjonalny. Warunki umożliwiają tworzenie wyrażeń określających, kiedy należy zastosować regułę.

Lista wspieranych akcji:

  • s3:AbortMultipartUpload
  • s3:CreateBucket
  • s3:DeleteBucketPolicy
  • s3:DeleteBucket
  • s3:DeleteBucketWebsite
  • s3:DeleteObject
  • s3:DeleteObjectVersion
  • s3:DeleteReplicationConfiguration
  • s3:GetAccelerateConfiguration
  • s3:GetBucketAcl
  • s3:GetBucketCORS
  • s3:GetBucketLocation
  • s3:GetBucketLogging
  • s3:GetBucketNotification
  • s3:GetBucketPolicy
  • s3:GetBucketRequestPayment
  • s3:GetBucketTagging
  • s3:GetBucketVersioning
  • s3:GetBucketWebsite
  • s3:GetLifecycleConfiguration
  • s3:GetObjectAcl
  • s3:GetObject
  • s3:GetObjectTorrent
  • s3:GetObjectVersionAcl
  • s3:GetObjectVersion
  • s3:GetObjectVersionTorrent
  • s3:GetReplicationConfiguration
  • s3:ListAllMyBuckets
  • s3:ListBucketMultiPartUploads
  • s3:ListBucket
  • s3:ListBucketVersions
  • s3:ListMultipartUploadParts
  • s3:PutAccelerateConfiguration
  • s3:PutBucketAcl
  • s3:PutBucketCORS
  • s3:PutBucketLogging
  • s3:PutBucketNotification
  • s3:PutBucketPolicy
  • s3:PutBucketRequestPayment
  • s3:PutBucketTagging
  • s3:PutBucketVersioning
  • s3:PutBucketWebsite
  • s3:PutLifecycleConfiguration
  • s3:PutObjectAcl
  • s3:PutObject
  • s3:PutObjectVersionAcl
  • s3:RestoreObject

Lista wspieranych warunków:

  • aws:CurrentTime
  • aws:EpochTime
  • aws:SourceIp
  • aws:username

Przykłady użycia

Bucket publiczny.

Zezwól na listowanie obiektów oraz ich pobranie (również użytkownikowi anonimowemu). Bucket, do którego przypisana zostanie poniższa polityka będzie widoczny dla każdego, tj. dla wszystkich użytkowników Atman Object Storage oraz zapytań z sieci publicznej.

Zezwól na listowanie obiektów oraz ich pobranie (również użytkownikowi anonimowemu). Bucket, do którego przypisana zostanie poniższa polityka będzie widoczny dla każdego, tj. dla wszystkich użytkowników Atman Object Storage oraz zapytań z sieci publicznej.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::przykladowy-bucket",
        "arn:aws:s3:::przykladowy-bucket/*"
      ]
    }
  ]
}

Aplikowanie polityk

awscli

aws s3api put-bucket-policy --bucket przykladowy-bucket --policy file://plik.json --endpoint https://s3.atman.pl

s3cmd

s3cmd setpolicy policy.json s3://przykladowy-bucket