Come utilizzare AWS API Gateway per ruotare rapidamente le credenziali in questo modo?

0

Leggendo questo articolo , ho colpito un piccolo muro di comprensione. L'autore afferma:

This is because my laptop doesn’t have the secret weapon. Once you get this up and running on an EC2 instance, these temporary security credentials will be automatically retrieved from the instance metadata. If the concept of temporary credentials is new to you, here’s an excerpt from the documentation (emphasis mine)

Non capisco cosa intenda per queste credenziali di sicurezza temporanea verranno automaticamente recuperate dai metadati dell'istanza. L'argomento è che ci sono credenziali temporanee che vengono inviate per autenticare l'accesso dell'applicazione a un dato segreto. Mostra uno script demo che non invia alcuna credenziale, quindi non capisco come l'applicazione demo autentica effettivamente il gateway API in questo modello?

import re
import urlparse

# To install the required packages run: 
# pip install requests boto3 aws-requests-auth
import requests
from aws_requests_auth.aws_auth import AWSRequestsAuth
from aws_requests_auth import boto_utils


# We got this URL from our provisioned stack's output. This should be passed as a configuration variable, 
# but since there's no secrets in there, you could hard-code this
GITHUB_PROXY_URL = 'https://w974f1rs6e.execute-api.us-east-1.amazonaws.com/dev/repos/PokaInc/test-github-api/issues'


def get_aws_auth(url):
    # These next variables are needed for the signing process
    api_gateway_netloc = urlparse.urlparse(url).netloc
    api_gateway_region = re.match(
        r"[a-z0-9]+\.execute-api\.(.+)\.amazonaws\.com",
        api_gateway_netloc
    ).group(1)

    return AWSRequestsAuth(
        aws_host=api_gateway_netloc,
        aws_region=api_gateway_region,
        aws_service='execute-api',
        # This is how we query the temporary credentials of the EC2 instance, as simple as that
        **boto_utils.get_credentials()
    )


list_issues_response = requests.get(
    url=GITHUB_PROXY_URL,
    auth=get_aws_auth(GITHUB_PROXY_URL)
)

print list_issues_response.json()

Come mostrato nello script, non vi è altra autenticazione oltre allo script che richiede un URL proxy.

    
posta the_endian 09.10.2018 - 01:07
fonte

1 risposta

0

boto_utils.get_credentials () sta aggiungendo aws_access_key , aws_secret_access_key e aws_token a AWSRequestsAuth() mediante l'operatore a due stelle ** kwargs .

Pertanto, le credenziali vengono inviate dalla chiamata alla libreria boto_utils che le estrae automaticamente dal ruolo metadati / IAM dell'istanza.

    
risposta data 11.10.2018 - 19:30
fonte

Leggi altre domande sui tag