Avvio automatico di un'istanza Spot EC2

10

Sto pensando di utilizzare le istanze Spot EC2 in modo automatico (ad esempio, creare uno script che richiederà istanze Spot EC2 che verranno eseguite automaticamente).

Per questo specifico caso d'uso, sono felice di bloccare il gruppo di sicurezza in modo tale che non ci siano connessioni in entrata consentite sulle istanze Spot.

L'unico output dello script è comunicare con un server RDS.

Sono in cerca di una soluzione che mi permetta di avviare una richiesta per un'istanza spot e di caricare il software richiesto, compreso l'accesso a un database che vive sull'RDS.

La mia preoccupazione principale è come fornire il codice in modo sicuro (comprese le credenziali DB).

Quali sono i problemi di sicurezza che devono essere considerati e quale metodo fornirà il rischio più basso?

I miei pensieri finora:

  • Non avere connessioni in entrata dovrebbe attenuare le minacce comuni

  • Il passaggio di dati a dati utente EC2 è ancora un rischio (memorizzazione di password o l'accesso al codice non mi sembra una buona idea)

  • Nei dati utente, fornire dettagli privati tramite il link S3 impostato su scadenza (difficile da fare con istanze spot come non so quando il L'istanza verrà creata)

  • Crea uno script per limitare l'accesso ai dati dell'utente

  • Devo pensare a un modo più elaborato per recuperare i dati dal istanza spot appena creata, quindi accedere a detta istanza e inviare dati via ssh?

posta Drew Khoury 01.08.2013 - 09:31
fonte

2 risposte

1

Non l'ho testato, ma dovrebbe funzionare.

Utilizza ruoli IAM

We designed IAM roles so that your applications can securely make API requests from your instances, without requiring you to manage the security credentials that the applications use. Instead of creating and distributing your AWS credentials, you can delegate permission to make API requests using IAM roles...

  1. Crea un bucket S3 privato.
  2. Memorizza le tue credenziali nel bucket S3 privato.
  3. Crea un ruolo IAM e assegnagli un criterio che gli consente di accedere al bucket S3 privato.
  4. Quando crei la tua istanza spot, applica il ruolo IAM.
  5. Usando i dati utente di ec2, usa uno script di bootstrap.
    • call curl link per accedere alle credenziali di sicurezza s3.
    • Utilizza le credenziali s3 per scaricare le credenziali del database dal bucket s3 creato in # 1.
  6. Ora hai consegnato in modo sicuro le tue credenziali alla tua istanza.
risposta data 29.01.2015 - 19:35
fonte
0

È possibile archiviare in modo sicuro le credenziali del database crittografato nei dati utente utilizzando KMS per crittografare e decrittografare le credenziali.

Impostazioni :

  1. Crea un ruolo IAM con autorizzazioni per consentire kms:Decrypt alla risorsa * (esempio sotto).
  2. Cifra (utilizzando altre credenziali AWS) le credenziali del tuo database chiamando codifica .
  3. Inserisci le credenziali del database crittografato nei dati utente dell'istanza spot nella configurazione di avvio.
  4. Associa la tua istanza spot al ruolo IAM creato in 1 nella configurazione di avvio.

Avvio istanza Spot :

  1. Leggi le credenziali del database crittografato dai dati utente
  2. Decifra le credenziali del database utilizzando una chiamata a decrypt

Tieni presente che tutti gli SDK tenteranno automaticamente di accedere a KMS con credenziali di ruolo di istanza, a meno che non vengano configurate credenziali specifiche.

Esempio di documento di politica IAM poiché non riesco a inserire il codice nel mezzo di un elenco numerato:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1429854706000",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
} 
    
risposta data 06.07.2015 - 08:59
fonte

Leggi altre domande sui tag