Zum Inhalt

AWS CLI & IAM Features

Die AWS Command Line Interface (CLI) ist das Standardwerkzeug zur Verwaltung von S3-kompatiblem Object Storage. Ceph S3 unterstützt eine Vielzahl der AWS S3 und IAM (Identity and Access Management) API-Aufrufe.

Dieses Dokument führt Sie durch die Installation der AWS CLI und zeigt Ihnen, wie Sie die IAM-Features von Ceph nutzen können, um detaillierte Zugriffsrechte für Benutzer und Applikationen zu verwalten.


1. AWS CLI Installation und Vorbereitung

Da sich System-Pakete und Python-Module in neueren Linux-Distributionen oft in die Quere kommen, empfehlen wir die Installation innerhalb einer virtuellen Python-Umgebung (venv). Dies verhindert Konflikte mit dem Betriebssystem.

# Systempakete für Python Pip und venv installieren (Beispiel für Debian/Ubuntu)
sudo apt update
sudo apt install python3-pip python3-venv

# Virtuelle Umgebung erstellen (z.B. im Home-Verzeichnis)
python3 -m venv ~/ceph.venv

# Virtuelle Umgebung aktivieren
source ~/ceph.venv/bin/activate

# Pip, Wheel und die benötigten AWS/Ceph Tools installieren bzw. aktualisieren
pip install -U pip wheel
pip install -U awscli s3cmd boto3

[!IMPORTANT] Achtung: Sie müssen die virtuelle Umgebung in jeder neuen Terminal-Sitzung aktivieren (source ~/ceph.venv/bin/activate), bevor Sie die aws-Befehle nutzen können.


2. AWS CLI Konfiguration für Ceph S3

Da wir nicht das AWS-eigene Netzwerk nutzen, müssen wir der CLI unsere spezifischen Ceph S3-Endpunkte mitteilen. Wir empfehlen die Nutzung von Umgebungsvariablen.

Ersetzen Sie xxx durch Ihren Access Key und Secret Key, welche Sie im Cloud Services Portal generiert haben.

# Zugangsdaten
export AWS_ACCESS_KEY_ID="xxx"
export AWS_SECRET_ACCESS_KEY="xxx"

# Ceph spezifische Fixes für Checksummen
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required

# S3 Endpunkt und Region definieren (Beispiel ch-zh1)
export url=https://s3.ewstorage.ch 
export region=ch-zh1 

# Oder für Region2:
export url=https://s3.ch-ge1.ewstorage.ch 
export region=ch-ge1 

# Test: Eigene Buckets auflisten
aws --endpoint=${url} --region=${region} s3 ls

3. IAM (Identity and Access Management) in Ceph

Ceph unterstützt Kernfunktionen der AWS IAM-API. Dies erlaubt es Ihnen, feingranulare Zugriffsrechte zu vergeben. Anstatt jedem System Vollzugriff (mit Ihren Haupt-Keys) zu geben, können Sie dedizierte "IAM User" für spezifische Anwendungen (z. B. Backup-Scripte, Web-Apps) erstellen und deren Rechte per "User Policy" einschränken.

3.1 Einen neuen IAM User erstellen

Erstellen Sie einen neuen Benutzer (z. B. app-backup-user). Dieser Benutzer existiert logisch unter Ihrem Haupt-Account.

aws --endpoint=${url} --region=${region} iam create-user \
    --user-name app-backup-user

3.2 Access Keys für den IAM User generieren

Damit sich der neue Benutzer authentifizieren kann, müssen wir Access Keys für ihn erstellen:

aws --endpoint=${url} --region=${region} iam create-access-key \
    --user-name app-backup-user

[!NOTE] Notieren Sie sich die ausgegebenen Werte für AccessKeyId und SecretAccessKey. Der Secret Key wird nur dieses eine Mal vollständig angezeigt!

3.3 Eine User Policy erstellen und zuweisen

Standardmäßig hat der neue IAM User keine Berechtigungen. Wir müssen ihm explizit Rechte zuweisen. Im Gegensatz zu einer Bucket Policy (die am Bucket hängt), hängt eine User Policy direkt am Benutzer.

Erstellen wir eine Datei policy.json. Diese Policy erlaubt dem User vollen S3-Zugriff, aber nur auf einen spezifischen Bucket namens mein-backup-bucket.

cat <<EOF > policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::mein-backup-bucket",
        "arn:aws:s3:::mein-backup-bucket/*"
      ]
    }
  ]
}
EOF

Nun weisen wir diese Policy dem User zu:

aws --endpoint=${url} --region=${region} iam put-user-policy \
    --user-name app-backup-user \
    --policy-name BackupBucketAccess \
    --policy-document file://policy.json

3.4 Überprüfung der IAM Policies

Sie können die vergebenen Rechte jederzeit überprüfen:

# Alle Policies eines Users auflisten
aws --endpoint=${url} --region=${region} iam list-user-policies \
    --user-name app-backup-user

# Eine spezifische Policy ansehen
aws --endpoint=${url} --region=${region} iam get-user-policy \
    --user-name app-backup-user \
    --policy-name BackupBucketAccess

Mit diesen IAM-Features können Sie das Prinzip der minimalen Rechtevergabe (Principle of Least Privilege) in Ihrem Ceph S3 Storage perfekt umsetzen.