IAM アクセスキーの管理 - AWS SDK for Ruby

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM アクセスキーの管理

ユーザーが AWS SDK for Ruby からプログラムで AWS を呼び出すには、独自のアクセスキーが必要です。このニーズを満たすために、IAM ユーザーのアクセスキー (アクセスキー ID およびシークレットアクセスキー) を作成、修正、表示、および更新できます。デフォルトでは、アクセスキーを作成したときのステータスが [Active] です。これは、ユーザーが API 呼び出しにそのアクセスキーを使用できることを意味します。アクセスキーの詳細については、「IAM ユーザーのアクセスキーの管理」を参照してください。

この例では、AWS SDK for Ruby を IAM で使用して、以下のことを行います。

  1. Aws::IAM::Client#list_access_keys を使用して AWS の IAM ユーザーのアクセスキーを一覧表示する。

  2. Aws::IAM::Client#create_access_key を使用してアクセスキーを作成する。

  3. Aws::IAM::Client#get_access_key_last_used を使用して、アクセスキーが最後にいつ使用されたか確認する。

  4. Aws::IAM::Client#update_access_key を使用してアクセスキーを無効化する。

  5. Aws::IAM::Client#delete_access_key を使用してアクセスキーを削除する。

前提条件

コード例を実行する前に、以下で説明されているように、AWS SDK for Ruby をインストールし、設定する必要があります。

スクリプトで指定されたユーザー (my-user) も作成する必要があります。新しい IAM ユーザーは、「新しい IAM ユーザーの追加」で説明しているように、IAM コンソールまたはプログラムで作成できます。

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX - License - Identifier: Apache - 2.0 # This code example demonstrates how to: # 1. List access keys for a user in AWS Identity and Access Management (IAM). # 2. Create an access key for a user. # 3. Determine when a user's access keys were last used. # 4. Deactivate an access key for a user. # 5. Delete an access key for a user. require 'aws-sdk-iam' # Lists information about access keys for a user in # AWS Identity and Access Management (IAM). # # Prerequisites: # - The user in IAM. # # @param iam [Aws::IAM::Client] An initialized IAM client. # @param user_name [String] The name of the user. # @example # puts list_access_keys(Aws::IAM::Client.new, 'my-user') def list_access_keys(iam, user_name) response = iam.list_access_keys(user_name: user_name) if response.access_key_metadata.count.positive? puts 'Access key IDs:' response.access_key_metadata.each do |key_metadata| puts " #{key_metadata.access_key_id}" end else puts "No access keys found for user '#{user_name}'." end rescue Aws::IAM::Errors::NoSuchEntity puts "Error listing access keys: cannot find user '#{user_name}'." exit 1 rescue StandardError => e puts "Error listing access keys: #{e.message}" end # Creates an access key for a user in AWS Identity and Access Management (IAM). # # Prerequisites: # - The user in IAM. # # @param iam [Aws::IAM::Client] An initialized IAM client. # @param user_name [String] The name of the user. # @return [Aws::IAM::Types::AccessKey] Information about the new access key; # otherwise, the string 'Error'. # @example # puts create_access_key(Aws::IAM::Client.new, 'my-user') def create_access_key(iam, user_name) response = iam.create_access_key(user_name: user_name) access_key = response.access_key puts 'Access key created:' puts " Access key ID: #{access_key.access_key_id}" puts " Secret access key: #{access_key.secret_access_key}" puts 'Keep a record of this information in a secure location. ' \ 'This will be the only time you will be able to view the ' \ 'secret access key.' return access_key rescue Aws::IAM::Errors::LimitExceeded puts 'Error creating access key: limit exceeded. Cannot create any more. ' \ 'To create more, delete an existing access key, and then try again.' return 'Error' rescue StandardError => e puts "Error creating access key: #{e.message}" return 'Error' end # Lists information about when access keys for a user in # AWS Identity and Access Management (IAM) were last used. # # Prerequisites: # - The user in IAM. # # @param iam [Aws::IAM::Client] An initialized IAM client. # @param user_name [String] The name of the user. # @example # puts access_keys_last_used(Aws::IAM::Client.new, 'my-user') def access_keys_last_used(iam, user_name) response = iam.list_access_keys(user_name: user_name) response.access_key_metadata.each do |key_metadata| last_used = iam.get_access_key_last_used(access_key_id: key_metadata.access_key_id) if last_used.access_key_last_used.last_used_date.nil? puts " Key '#{key_metadata.access_key_id}' not used or date undetermined." else puts " Key '#{key_metadata.access_key_id}' last used on " \ "#{last_used.access_key_last_used.last_used_date}" end end rescue StandardError => e puts "Error determining when access keys were last used: #{e.message}" end # Deactivates an access key in AWS Identity and Access Management (IAM). # # Prerequisites: # - A user in IAM. # - An access key for that user. # # @param iam [Aws::IAM::Client] An initialized IAM client. # @param user_name [String] The name of the user. # @param access_key_id [String] The ID of the access key. # @return [Boolean] true if the access key was deactivated; # otherwise, false. # @example # exit 1 unless access_key_deactivated?( # Aws::IAM::Client.new, # 'my-user', # 'AKIAIOSFODNN7EXAMPLE' # ) def access_key_deactivated?(iam, user_name, access_key_id) iam.update_access_key( user_name: user_name, access_key_id: access_key_id, status: 'Inactive' ) return true rescue StandardError => e puts "Error deactivating access key: #{e.message}" return false end # Deletes an access key in AWS Identity and Access Management (IAM). # # Prerequisites: # - A user in IAM. # - An access key for that user. # # @param iam [Aws::IAM::Client] An initialized IAM client. # @param user_name [String] The name of the user. # @param access_key_id [String] The ID of the access key. # @return [Boolean] true if the access key was deleted; # otherwise, false. # @example # exit 1 unless access_key_deleted?( # Aws::IAM::Client.new, # 'my-user', # 'AKIAIOSFODNN7EXAMPLE' # ) def access_key_deleted?(iam, user_name, access_key_id) iam.delete_access_key( user_name: user_name, access_key_id: access_key_id ) return true rescue StandardError => e puts "Error deleting access key: #{e.message}" return false end # Full example call: def run_me iam = Aws::IAM::Client.new user_name = 'my-user' create_key = true # Set to false to not create a new access key. delete_key = true # Set to false to not delete any generated access key. puts "Access keys for user '#{user_name}' before attempting to create an " \ 'additional access key for the user:' list_access_keys(iam, user_name) access_key = '' if create_key puts 'Attempting to create an additional access key...' access_key = create_access_key(iam, user_name) if access_key == 'Error' puts 'Additional access key not created. Stopping program.' exit 1 end puts 'Additional access key created. Access keys for user now are:' list_access_keys(iam, user_name) end puts 'Determining when current access keys were last used...' access_keys_last_used(iam, user_name) if create_key && delete_key puts 'Attempting to deactivate additional access key...' if access_key_deactivated?(iam, user_name, access_key.access_key_id) puts 'Access key deactivated. Access keys for user now are:' list_access_keys(iam, user_name) else puts 'Access key not deactivated. Stopping program.' puts 'You will need to delete the access key yourself.' end puts 'Attempting to delete additional access key...' if access_key_deleted?(iam, user_name, access_key.access_key_id) puts 'Access key deleted. Access keys for user now are:' list_access_keys(iam, user_name) else puts 'Access key not deleted. You will need to delete the ' \ 'access key yourself.' end end end run_me if $PROGRAM_NAME == __FILE__