marcosremar
✅ GCP Spot Instance Test Completed Successfully
0e1ff69
# Autenticação Segura no GCP
## ⚠️ NUNCA FAÇA ISSO
```json
❌ Compartilhar service account key publicamente
❌ Commitar credentials no git
❌ Enviar private key por mensagem/email
❌ Incluir em código fonte
```
## ✅ FORMAS SEGURAS
### 1. Cloud Shell (Melhor para Testes)
**Não precisa de credenciais!**
```bash
# Abrir: https://shell.cloud.google.com/
# Já está autenticado automaticamente
gcloud compute instances list
```
### 2. gcloud auth login (Desenvolvimento Local)
```bash
# Instalar gcloud
curl https://sdk.cloud.google.com | bash
# Login interativo (OAuth)
gcloud auth login
# Configurar projeto
gcloud config set project SEU_PROJECT_ID
# Usar normalmente
bash scripts/test/launch_gcp_spot.sh
```
### 3. Application Default Credentials (ADC)
```bash
# Para desenvolvimento local
gcloud auth application-default login
# Código Python automaticamente usa ADC
python scripts/test/launch_gcp_python.py
```
### 4. Service Account (Apenas CI/CD)
**SOMENTE se realmente necessário para automação**
#### Passo 1: Criar Service Account com Permissões Mínimas
```bash
# Console: https://console.cloud.google.com/iam-admin/serviceaccounts
# Criar service account
gcloud iam service-accounts create ensemble-test \
--display-name="Ensemble Testing (Limited)"
# Dar permissão APENAS para criar instâncias
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:ensemble-test@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/compute.instanceAdmin.v1"
```
#### Passo 2: Criar Key e Proteger
```bash
# Criar key
gcloud iam service-accounts keys create key.json \
--iam-account=ensemble-test@PROJECT_ID.iam.gserviceaccount.com
# PROTEGER o arquivo
chmod 600 key.json
# NUNCA commitar no git
echo "key.json" >> .gitignore
echo "*.json" >> .gitignore
```
#### Passo 3: Usar via Variável de Ambiente
```bash
# Exportar (apenas na sua máquina local)
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"
# Usar no código
python scripts/test/launch_gcp_python.py
```
#### Passo 4: DELETAR quando não precisar mais
```bash
# Listar keys
gcloud iam service-accounts keys list \
--iam-account=ensemble-test@PROJECT_ID.iam.gserviceaccount.com
# Deletar key
gcloud iam service-accounts keys delete KEY_ID \
--iam-account=ensemble-test@PROJECT_ID.iam.gserviceaccount.com
```
### 5. GitHub Actions / CI/CD
Para CI/CD, use GitHub Secrets:
```yaml
# .github/workflows/test.yml
name: GCP Test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Authenticate to GCP
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: Run test
run: |
bash scripts/test/launch_gcp_spot.sh
```
**Configurar secret**:
1. GitHub → Settings → Secrets → New secret
2. Name: `GCP_CREDENTIALS`
3. Value: Conteúdo do key.json
4. **NUNCA** fazer commit do key.json
---
## 🔐 Checklist de Segurança
Antes de usar credenciais:
- [ ] Estou usando Cloud Shell? (Melhor opção)
- [ ] Estou usando `gcloud auth login`? (Ótima opção)
- [ ] Estou usando ADC? (Boa opção)
- [ ] Realmente preciso de service account? (Apenas CI/CD)
- [ ] Key tem permissões mínimas? (Principle of least privilege)
- [ ] Key está no .gitignore? (Nunca commitar)
- [ ] Key tem permissions 600? (chmod 600)
- [ ] Vou deletar a key depois? (Cleanup)
---
## 🚨 Se Você Expôs uma Chave
### 1. Revogar IMEDIATAMENTE
```bash
# Via gcloud
gcloud iam service-accounts keys delete KEY_ID \
--iam-account=SERVICE_ACCOUNT_EMAIL
# Via console
https://console.cloud.google.com/iam-admin/serviceaccounts
→ Selecionar SA → Keys → Delete
```
### 2. Verificar Uso Não Autorizado
```bash
# Ver logs de audit
gcloud logging read \
"protoPayload.authenticationInfo.principalEmail=SERVICE_ACCOUNT_EMAIL" \
--limit 50 \
--format json
```
### 3. Criar Nova Chave (se necessário)
Seguir passos seguros acima
### 4. Notificar Time de Segurança
Se for empresa/organização
---
## 💡 Recomendação Final
**Para seu caso (teste do ensemble)**:
Use **Cloud Shell** ou **gcloud auth login**
Não precisa de service account!
```bash
# Opção mais simples e segura:
# 1. https://shell.cloud.google.com/
# 2. curl -O https://.../launch_gcp_spot.sh
# 3. chmod +x launch_gcp_spot.sh
# 4. ./launch_gcp_spot.sh
```
**Zero configuração de credenciais necessária!**