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