2015-03-26 4 views
3

У меня есть веб-инструмент, который позволяет пользователям IAM делать магию со своей учетной записью AWS. Учитывая, что у меня есть бесплатный план, любой пользователь AWS может создать новых пользователей IAM после того, как судебное разбирательство закончится, поэтому они в конечном итоге никогда не будут платить за мой сервис. Есть ли способ узнать идентификатор учетной записи Aws конкретного пользователя IAM? Таким образом, я могу сохранить этот идентификатор на db и заблокировать любого другого нового пользователя IAM, исходящего из этой конкретной учетной записи AWS.Программно определить идентификатор учетной записи AWS конкретного пользователя IAM

+0

У вас есть учетные данные для этих пользователей? Как они идентифицируются с вами в данный момент? –

+0

Да, у меня есть ID ключа доступа и секретный ключ доступа – alexandresaiz

ответ

2

Если у вас есть доступ к iam GetUser, тогда этот вызов возвращает (помимо прочего) ARN для пользователя, который включает идентификатор учетной записи. Вам не нужно знать имя пользователя для его вызова - если ни один не указан, он использует вызывающего пользователя.

Вызов как AWS РМОК Get-User

бы вернуть:

{ 
    "User": { 
    "UserName": "test", 
    "PasswordLastUsed": "2015-01-18T11:08:07Z", 
    "CreateDate": "2014-10-21T20:30:04Z", 
    "UserId": "AIDAXXXXXXXXXXXXX", 
    "Path": "/", 
    "Arn": "arn:aws:iam::123456789012:user/test" 
    } 
} 

ARN (Amazon номерных ресурсов (ARN)) для IAM сущностей формата arn:aws:iam::account-number:resource, так что вы просто необходимо извлечь эту порцию(). Вы не можете гарантировать, что последние части также не будут содержать цифры, поэтому вы должны разделить на : и принять 5-й компонент.

0

Вы можете использовать Get-IAMUser и получать информацию, включая ARN; синтаксический анализ ARN также будет иметь идентификатор учетной записи. Снимок экрана ниже.

PowerShell

Import-Module AWSPowerShell.psd1 
Get-IAMUser 

enter image description here

Boto

import boto 
iam = boto.connect_iam() 
iam.get_user() 
0

Другой Python boto2 вариант в случае, если у вас нет доступа/разрешения для iam.get_user()

import boto.utils 

print boto.utils.get_instance_metadata()['iam']['info']['InstanceProfileArn'].split(':')[4] 
1

рубин SDK

#!/usr/bin/ruby 
require 'aws-sdk' 
require 'pp' 
require 'colorize' 

current_region='us-west-2' 
current_profile='default' 

Aws.config.update({ 
         region: current_region, 
         credentials: Aws::SharedCredentials.new(profile_name: current_profile), 
        }) 

iam = Aws::IAM::Client.new 
client = iam.get_account_authorization_details({ 
                max_items: 1, 
               }) 
resp=client.user_detail_list[0].arn 
acc="#{resp}".split(":")[4] 
puts acc 
3

От CLI

aws sts get-caller-identity 

Если вы используете вызовы IAM на основе (то же, что предложили другие люди) ваш IAM пользователь должен иметь правильные разрешения для этих вызовов, но sts нужно пройти для любого пользователя IAM.

Смежные вопросы