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):
Operacja | READ | WRITE | READWRITE | FULL |
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