Ruby AWS SDK - Использование Aws :: AssumeRoleCredentials без маркера mfa - PullRequest
0 голосов
/ 15 ноября 2018

Я начал работать с аутентификацией AWS и, похоже, пробил с помощью объекта Aws :: AssumeRoleCredentials.

Надеюсь, я просто неправильно понял, стоит ли мне вообще его использовать.

У меня есть успешный метод принятия роли при использовании токена mfa:

# Assume the role referenced in the profile
def assume_role(mfa_token_code = nil)
  sts_client = Aws::STS::Client.new(credentials: @user_credentials, region: @user_profile.region)

  @role_credentials = sts_client.assume_role(
     {
       role_arn: @user_profile.role_arn, # required
       role_session_name: @session_name, # required
       duration_seconds: @duration_seconds,
       serial_number: @user_profile.mfa_serial,
       token_code: mfa_token_code.to_s
    }
  )
end

Это работает нормально, но требует токен mfa.

Я думаю, что можно затем снова аутентифицироваться, если время сеанса не истекло, без необходимости запрашивать у пользователя другой токен mfa, но я изо всех сил пытаюсь найти способ сделать это.

Я возился с объектом AssumeRoleCredentials в надежде, что это правильный объект для этого:

def authenticate_as_application_user

  begin
    @role_credentials = Aws::AssumeRoleCredentials.new(
      # client: Aws::STS::Client.new(credentials: @user_credentials, region: @user_profile.region),
      duration_seconds: @duration_seconds,
      role_arn: @user_profile.role_arn,
      role_session_name: 'session-name-xxxxxxxxx'
    )
  rescue
    puts 'Enter MFA code: '
    mfa_token_code = gets.chomp
    unless mfa_token_code.nil?
      assume_role(mfa_token_code)
    else
      puts('No code supplied, aborting')
    end
  end
end

Независимо от того, что я пытаюсь, этот код не может принять роль с ошибкой:

Access denied

Я знаю из других инструментов python, что я использую это, если я аутентифицируюсь с токеном mfa, а затем повторно запускаю инструмент, мне больше не будет предложено, пока не истечет время ожидания исходного сеанса.

Что я делаю не так?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...