Vai al contenuto

Funzionalità AWS CLI e IAM

L'AWS Command Line Interface (CLI) è lo strumento standard per gestire lo storage a oggetti compatibile con S3. Ceph S3 supporta un'ampia gamma di chiamate API AWS S3 e IAM (Identity and Access Management).

Questo documento la guida nell'installazione dell'AWS CLI e mostra come utilizzare le funzionalità IAM di Ceph per gestire autorizzazioni di accesso granulari per utenti e applicazioni.


1. Installazione e preparazione dell'AWS CLI

Poiché i pacchetti di sistema e i moduli Python delle distribuzioni Linux più recenti entrano spesso in conflitto tra loro, consigliamo di installare in un ambiente Python virtuale (venv). Questo evita conflitti con il sistema operativo.

# Install system packages for Python pip and venv (example for Debian/Ubuntu)
sudo apt update
sudo apt install python3-pip python3-venv

# Create virtual environment (e.g., in the home directory)
python3 -m venv ~/ceph.venv

# Activate virtual environment
source ~/ceph.venv/bin/activate

# Install or upgrade pip, wheel, and the required AWS/Ceph tools
pip install -U pip wheel
pip install -U awscli s3cmd boto3

[!IMPORTANT] Nota: Deve attivare l'ambiente virtuale in ogni nuova sessione di terminale (source ~/ceph.venv/bin/activate) prima di usare i comandi aws.


2. Configurazione dell'AWS CLI per Ceph S3

Poiché non utilizziamo la rete nativa di AWS, dobbiamo indicare alla CLI i nostri endpoint Ceph S3 specifici. Consigliamo di utilizzare variabili d'ambiente.

Sostituisca xxx con la sua Access Key e la sua Secret Key, che ha generato nel Cloud Services Portal.

# Credentials
export AWS_ACCESS_KEY_ID="xxx"
export AWS_SECRET_ACCESS_KEY="xxx"

# Ceph-specific fixes for checksums
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required

# Define S3 endpoint and region (example ch-zh1)
export AWS_ENDPOINT_URL=https://s3.ewstorage.ch 
export AWS_DEFAULT_REGION=ch-zh1

# Or for Region2:
export AWS_ENDPOINT_URL=https://s3.ch-ge1.ewstorage.ch 
export AWS_DEFAULT_REGION=ch-ge1 

# Test: List your own buckets
aws s3 ls

3. IAM (Identity and Access Management) in Ceph

Ceph supporta le funzioni API IAM principali di AWS. Questo le consente di assegnare autorizzazioni di accesso granulari. Invece di concedere l'accesso completo (con le sue chiavi principali) a ogni sistema, può creare "IAM User" dedicati per applicazioni specifiche (ad esempio script di backup, applicazioni web) e limitarne le autorizzazioni tramite una policy utente.

Per limitare l'accesso a singoli bucket per tutte le credenziali di un progetto, consulti Policy di bucket e Access Fencing.

3.1 Creare un nuovo utente IAM

Crei un nuovo utente (ad esempio app-backup-user). Questo utente esiste logicamente sotto il suo account principale.

aws iam create-user \
    --user-name app-backup-user

3.2 Generare chiavi di accesso per l'utente IAM

Per consentire al nuovo utente di autenticarsi, dobbiamo creare delle chiavi di accesso:

aws iam create-access-key \
    --user-name app-backup-user

[!NOTE] Annoti i valori visualizzati per AccessKeyId e SecretAccessKey. La Secret Key verrà mostrata per intero una sola volta!

3.3 Creare e assegnare una policy utente

Per impostazione predefinita, il nuovo utente IAM non ha alcuna autorizzazione. Dobbiamo concedergli esplicitamente i diritti. A differenza di una policy di bucket (collegata al bucket), una policy utente è collegata direttamente all'utente.

Creiamo un file policy.json. Questa policy concede all'utente l'accesso completo a S3, ma solo a un bucket specifico denominato 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

Ora assegniamo questa policy all'utente:

aws iam put-user-policy \
    --user-name app-backup-user \
    --policy-name BackupBucketAccess \
    --policy-document file://policy.json

3.4 Verificare le policy IAM

Può verificare le autorizzazioni assegnate in qualsiasi momento:

# List all policies for a user
aws iam list-user-policies \
    --user-name app-backup-user

# View a specific policy
aws iam get-user-policy \
    --user-name app-backup-user \
    --policy-name BackupBucketAccess

Con queste funzionalità IAM, può applicare perfettamente il principio del minimo privilegio nel suo storage Ceph S3.