1

J'ai 2 comptes AWS.L'agent CloudWatch Logs ne peut pas assumer le rôle d'envoyer des journaux à un compte différent

  • compte A: instances EC2 avec awslogs client de amazon
  • compte B: compte de journalisation centralisée

Je veux envoyer des journaux de l'instance EC2 avec awslogs client (en compte A) d'un compte vers CloudWatch Logs dans un autre compte (compte B).

Il fonctionne très bien en créant un utilisateur IAM compte B et la mise en place de la clé des titres de compétence AWS dans awscli.conf, mais je ne veux pas les clés à codés en dur, donc je suis en train d'assumer le rôle comme suit:

IAM rôle du compte B (le compte CloudWatch), je créé un nom de rôle CloudWatchCrossRole:

politique en ligne (permettre à ce rôle d'écrire des journaux à CloudWatch journaux):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": [ 
     "logs:*" 
     ], 
     "Effect": "Allow", 
     "Resource": "*" 
    } 
    ] 
} 

politique de confiance:

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
    { 
     "Sid": "", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "arn:aws:iam::ACCOUNT_A:role/CLoudWatchInstanceProfile" 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 

Compte A, je commence une instance EC2 avec le profil CLoudWatchInstanceProfile qui se présente comme suit:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "*" 
      ], 
      "Resource": "*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "sts:AssumeRole", 
      "Resource": "arn:aws:iam::ACCOUNT_B:role/CloudWatchCrossRole" 
     } 
    ] 
} 

Pas de joie, les journaux sont poussés à ACCOUNT_A au lieu de ACCOUNT_B. Quelqu'un peut-il m'indiquer si AssumeRole sur CloudWatch Logs est possible ou s'il est obligatoire de créer un utilisateur IAM et de coder en dur les informations d'identification dans awscli.conf?

Répondre

1

Cette approche présente deux problèmes. Tout d'abord, rien n'appelle sur le rôle du compte B. L'agent CloudWatch Logs attend des informations d'identification, pas un rôle.

En second lieu, le profil de l'instance dans le compte A ne peut pas attribuer des autorisations au compte B

Je ne pouvais pas trouver toute la documentation pour montrer comment insérer des informations d'identification dans le fichier awscli.conf vous avez mentionné (pouvez-vous montrer un échantillon)?

deux options:

  • Création d'un utilisateur du compte B et fournir l'accès résultant/clé secrète à l'agent des journaux CloudWatch (comme vous semblez avoir fait, mais n'aiment pas), ou
  • ont un processus exécuté sur l'instance qui appelle AssumeRole contre le rôle du compte B, puis fournir ces informations d'identification à l'agent des journaux CloudWatch

Si vous êtes abonné à AWS support, ouvrir un dossier d'assistance pour demander des conseils .

+0

HI John, merci pour votre réponse, pour le awscli.conf, voici le lien: http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html # running-ec2-step-2 En ce qui concerne cloudwatch, je ne comprends tout simplement pas comment une autre société fait quand elle a plusieurs comptes et qu'elle veut agréger tous les journaux dans un compte de journal sécurisé, je pensais que c'était une bonne pratique. Pourquoi aws le rend si compliqué – jthemovie

+0

J'ai trouvé ça, mais je ne suis pas sûr que ce soit ce que vous voulez: [Amazon CloudWatch Logs - Abonnements Cross Account] (https://aws.amazon.com/about-aws/whats-new/ 2015/08/amazon-cloudwatch-logs-cross-compte-abonnements /) –

+0

Merci encore John, je connaissais celui-ci, mais en ajoutant kinesis entre les deux semblait un peu exagéré, je vais essayer ce projet https://github.com/ryotarai/fluent-plugin-cloudwatch-logs et voir. – jthemovie