2016-04-18 6 views
0

Ich versuche, die Details einer aws IAM-Richtlinie über Boto zu erhalten, um IAM-Richtlinien über ein Skript zu sichern oder zu replizieren. Ich habe die Dokumente von Boto 2 und 3 durchsucht, aber keine Möglichkeit gefunden, die JSON-Daten einer konfigurierten Richtlinie zu erhalten.So erhalten Sie IAM-Richtliniendokument über boto

Was ich (erfolgreich) tat

  • eine Politik über IAM-Management-Konsole Erstellt
  • es zu einer Rolle zugewiesen
  • Gebraucht es für die Erstellung von EC2-Instanzen über Boto

Aber ich kann keine Möglichkeit finden, die zugehörigen JSON-Daten ("Richtliniendokument" in Management Console) abzurufen, um sie in boto zu erhalten.

Was ich mit Boto versucht:

import boto.iam 
REGION_NAME = 'eu-west-1' 
iam_conn = boto.iam.connect_to_region(REGION_NAME) 
arn = 'arn:myproperlyformattedarn' 
p = iam_conn.get_policy(arn) 
print p 

Ergebnis:

{ 
    "get_policy_response": { 
     "response_metadata": { 
      "request_id": "XXXXX-XXXX-XXXX-XXXX-XXXX" 
     }, 
     "get_policy_result": { 
      "policy": { 
       "update_date": "2016-04-15T12:51:21Z", 
       "create_date": "2016-04-15T12:51:21Z", 
       "is_attachable": "true", 
       "policy_name": "My_Policy_Name", 
       "default_version_id": "v1", 
       "attachment_count": "1", 
       "path": "/", 
       "arn": "arn:aws:iam::123456789:policy/VerticaTest_GetConfigsFromS3", 
       "policy_id": "XXXSOMELONGSTRINGXXXX" 
      } 
     } 
    } 
} 

Was ich nach so etwas wie dieses (das Richtliniendokument in Management Console):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::mybucketname", 
       "arn:aws:s3:::mybucketname/*" 
      ] 
     } 
    ] 
} 

Antwort

1

Bitte schalten boto3 da es eine bessere Unterstützung und Dokumentation. Wie in der boto3-Dokumentation gibt get_policy() Ihnen policydocument nicht.

Das Beste, was ich bekommen kann, ist get_account_authorization_details()

http://boto3.readthedocs.org/en/latest/reference/services/iam.html#IAM.Client.get_account_authorization_details

ich eine schnelle Überprüfung unter cli hat, nur alle Befehl ersetzen dann boto3 Sie sind alle gut zu gehen.

aws iam get-account-authorization-details --filter 'LocalManagedPolicy' 
+0

Die Funktion get_account_authorization_details() enthalten ist eigentlich die Richtliniendetails. – sarnu

0

Ich denke, Sie können Folgendes verwenden:

get_policy(policy_arn) 
Get policy information. 

Parameters: policy_arn (string) – The ARN of the policy to get information for 

get_policy_version(policy_arn, version_id)¶ 
Get policy information. 

Parameters: 
policy_arn (string) – The ARN of the policy to get information for a specific version 
version_id (string) – The id of the version to get information for 

http://boto.cloudhackers.com/en/latest/ref/iam.html

3

Bitte gehen Sie zu boto3.

Gehen Sie von der Richtlinienseite aus folgendermaßen vor: Identifizieren Sie den Richtlinien-ARN, Identifizieren Sie die Richtlinie DefaultVersionId mithilfe des ARN, Abrufen des Richtliniendokuments mithilfe von ARN und DefaultVersionId.

import boto3 
import json 

arn = 'arn:aws:iam::aws:policy/AdministratorAccess' 

iam = boto3.client('iam') 
policy = iam.get_policy(
    PolicyArn = arn 
) 
policy_version = iam.get_policy_version(
    PolicyArn = arn, 
    VersionId = policy['Policy']['DefaultVersionId'] 
) 

print(json.dumps(policy_version['PolicyVersion']['Document'])) 
print(json.dumps(policy_version['PolicyVersion']['Document']['Statement'])) 

Führen Sie diesen Code aus und leiten Sie die Ausgabe an "jq." und Sie erhalten die folgende Ausgabe:

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

[ 
    { 
    "Action": "*", 
    "Resource": "*", 
    "Effect": "Allow" 
    } 
] 

Sie speziell die Aktionen/Anweisung in Ihrer Frage angefordert. Ich habe die Eigenschaften "Dokument" und "Aussage" gedruckt, um die Unterschiede zu zeigen.

http://boto3.readthedocs.io/en/latest/reference/services/iam.html#IAM.Client.get_policy http://boto3.readthedocs.io/en/latest/reference/services/iam.html#IAM.Client.get_policy_version

Verwandte Themen