Amazon S3 - opravneni uzivatele k adresari v bucketu rubrika: Administrace: Software

1 martin1
položil/-a 4.7.2016

Ahoj,
potrebuju zalohovat asi 20 pocitacu a rad bych pouzil Amazon S3.
Chci mit jeden spolecny bucket BUCKET.BACKUP a pro kazdy pc jednoho IAM uzivatele, ktery bude mit pristup pouze do BUCKET.BACKUP/username
Problem je, ze se mi stale nedari nastavit opravneni.

Vytvoril jsem bucket BUCKET.BACKUP a priradil mu policy:

{
    "Version": "2008-10-17",
    "Statement": [ 
        {
            "Sid": "Stmt1375892150733",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::386209384616:root"
            },
            "Action": [
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::BUCKET.BACKUP"
        }
    ]
}

v IAM->Policies jsem vytvoril nasledujici policy arn:aws:iam::123456789012:policy/USERA-_BUCKET.BACKUP:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/USER_A"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::BUCKET.BACKUP"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/USER_A"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::BUCKET.BACKUP/USER_A/*"
        },
        {
            "Sid": "Stmt1335892150622",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::386209384616:root"
            },
            "Action": [
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::BUCKET.BACKUP"
        },
        {
            "Sid": "Stmt1335892526596",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::386209384616:root"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::BUCKET.BACKUP/USER_A/*"
        }
    ]
}

dale jsem vytvoril uzivatele USER_A a priradil mu vyse uvedenou policy.

Pri pokusu o pripojeni k bucketu BUCKET.BACKUP/USER_A z Duplicati (pouzivam Access Key ID a Secret Access Key pro USER_A) vzdy skonci pripojeni s chybou.

Muzete mi prosim poradit, jak nastavit vice uzivatelu, aby kazdy mel pristup pouze do jednoho adresare v jednom bucketu?

Dale se snazim o vypis, kolik ktery uzivatel spotreboval. Rad bych vedel, ktery pocitac zalohoval nejvice dat a mel nejvice prenosu - stal nejvice penez.
Podarilo se mi priradit ke kazdemu bucketu tag a ten pak filtrovat v Cost Exploreru - to je mi ale k nicemu, ja potrebuju tagovat uzivatele, nebo jeho adresar v bucketu.

Snazil jsem se postupovat podle navodu Writing IAM Policies: Grant Access to User-Specific Folders in an Amazon S3 Bucket, ale asi delam neco spatne.

Diky za jakoukoliv radu.

odkaz
7 messa
odpověděl/-a 6.7.2016
 
upravil/-a 6.7.2016

Takhle vypadá náš policy dokument pro přístup uživatele do adresáře PATH bucketu BUCKET:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1453118674000",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "Stmt1453118723000",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET/PATH/*"
            ]
        },
        {
            "Sid": "Stmt1453128723000",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET"
            ]
        }
    ]
}

Hlavní rozdíl oproti kódu v otázce je přidání ListAllMyBuckets, to by asi mohlo být příčinou problémů nějakého bucket discovery v těhle nástrojích. Taky máme ListBucket na celý bucket, to asi není 100% OK a mělo by to být omezené na prefix (podadresář), zatím jsem to ale neřešil (zálohy z každého stroje se stejně šifrují jiným klíčem). Dost možná není ani potřeba Get/PutObjectAcl :)

IAM a tyhle policies jsou podle mě asi nejhorší částí AWS, kterou si člověk musí projít, když to chce nějak pořádně používat, holt daň za flexibilitu. Zajímalo by mě, kolik firem na to kašle a jedou s jedním root access tokenem všude :)

Kdyby to nepomohlo, tak uveď prosím chybu, kterou to píše. Případně snížit log level a zkopírovat sem, o co se to vlastně pokouší.

Ještě něco, když se na to koukám - tohle je policy, kterou přiřazujeme konkrétnímu uživateli (v AWS konzoli). Narozdíl od policy s Principal, která by byla přiřazena přímo k bucketu.

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.