AWS アクセスキーとは?AWS アクセスキーの作り方や使い方を紹介!
AWS アクセスキーとは
AWS アクセスキーとは
AWSアクセスキーとは、S3やEC2といったAWSの各サービスに対してプログラムにおけるアクセスを認証するために作成される認証キーです。
AWSアクセスキーはアクセスキーIDとシークレットアクセスキーで出来ます。AWSアクセスキーはプログラムにおけるアクセスが可能なので、できるだけ取り扱いは慎重に行うようにしてください。
AWS アクセスキーの作り方
AWS アクセスキーとは何かを説明しましたが、ここからはAWS アクセスキーの作り方を詳しく解説します。
AWS アクセスキーを作成してみたい方または興味がある方は是非ご覧ください。
マネジメントコンソールから作成する
AWSアクセスキーは、IAMから作成することができます。大まかな流れとしてはまず、IAMユーザーを作成し、その後にそのユーザーに対してアクセスキーを作成します。
IAM ユーザーを作成する
IAMユーザーを作成するためには、マネジメントコンソールからIAMにアクセスし、ユーザーの作成を選択します。ユーザー名を入力したのちに、アカウントに付与する権限を設定します。
権限を付与する際には、IAMで作成したグループに追加するか、ポリシーに直接アタッチします。そして権限を付与したのちに、IAMユーザーを作成することができます。
ここで権限の設定にはポリシーを選択することになります。Admin権限を付与すると全てのサービスにアクセスすることができるようになります。
しかし、アクセスキーに権限を付与しすぎてしまうと、アクセスキーが漏洩した際に大きな被害を受けてしまいます。DBに関するアクセスのみ、Cognitoに関するアクセスのみといったように、付与するポリシーを変えることで、最小限の権限を付与するようにしましょう。
アクセスキーを作成する
IAMユーザーを作成したのちに、そのアカウントに対してアクセスキーを作成します。具体的な作成方法は以下の通りです。
最後にダウンロードしたアクセスキーIDと、シークレットアクセスキーをAWS認証情報ファイル(~/.aws/credintial)に入力することで、アクセスキーをプログラムから呼び出す準備を整えることができます。
CLIから作成する
AWSのCLI(Commnad Line Interface)からアクセスキーを作成するためには、以下のコマンドを実行してください。ここで、–user-name以下に設定したいユーザー名を入力してください。
$ aws iam create-access-key –user-name MyUser
また、CLI上でアクセスキーを作成するためには、以下のコマンドを実行します。ここで、–user-name以下に削除したいユーザー名を、–access-key-id以下にアクセスキーを入力してください。
$ aws iam delete-access-key –user-name MyUser –access-key-id XXXXXXXXXXX
AWSアクセスキーの使い方
AWSアクセスキーを作成する際には、アクセスキーをプログラムに埋め込むのではなく、AWS認証情報ファイル、もしくは環境変数から読み込むようにしてください。
具体的にここで、pythonでcognitoを利用する際のコードを上げます。以下のコードでアクセスキーを取得し、clientをもとにcognitoでの操作を行うことができます。
accesskey = os.environ.get(“AWS_ACCESS_KEY_ID”)
secretkey = os.environ.get(“AWS_SECRET_ACCESS_KEY”)
client = boto3.client(‘cognito-idp’,
region_name = self.region,
aws_access_key_id = self.accesskey,
aws_secret_access_key = self.secretkey,
)
AWS アクセスキーに関する注意
AWSアクセスキーは、実際にAWSを操作するのと同じく、プログラムによるAWSの操作を可能とします。そのため、AWSアクセスキーの保管には十分注意を払う必要があります。
基本的には、アクセスキーはルートユーザーではなく、IAMユーザーを作成し、権限をIAMで制限した上で作成することをお勧めします。
また、保管には厳重な注意を払い、メールなどによる共有を避けるようにします。そして、第三者によるアクセスを避けるようにしてください。
特によくあると考えられるのは、PublicのリポジトリにPushしてしまうことです。そういったことを避けるために、認証ファイルはgitignoreに記載するようにしましょう。
以下の各章では、AWSで紹介されているベストプラクティスについて紹介します。
アカウントアクセスキーを削除する
ルートユーザーのアクセスキーをなるべく持たないようにしましょう。ルートユーザーのアクセスキーを持っていると、請求情報を含む全ての情報にアクセスすることができてしまいます。
そのため、ルートユーザーのアクセスキーが漏洩してしまった場合、大きな損害を被る可能性があります。そこで、アクセスキーを作成する際には上で述べたように、権限を制限したアカウントに対して作成する必要があります。
一時的なセキュリティ認証情報を使用する
AWSアクセスキーの代わりに、IAMロールを作成し、一時的なセキュリティ認証情報を作成することができます。この一時的なセキュリティ認証情報は、アクセスキーIDとシークレットアクセスキーに加えて、認証情報がいつ無効になるかというセキュリティトークンも含んでいます。
これによりアクセスキーのリスクを減らすことができます。
以下のような場合には、アクセスキーを作成するのではなく、一時的なセキュリティ認証情報を作成します。
まず、AWSEC2インスタンスで実行しているアプリケーションにおいて、アクセスキーをプログラムに埋め込むことはしないでください。その代わりにIAMのロールを定義し、EC2のロールを使用してインスタンスを起動します。
次にモバイルアプリを持っている場合は、アクセスキーはアプリに埋め込まないでください。代わりにCognitoを利用して、ユーザーIDを管理してください。
アクセスキーを適切に管理する
アクセスキー を管理する上での注意点をここでは紹介します。
まずは、コードにアクセスキーを直書きしないことです。AWS認証情報ファイル、もしくは環境変数から読み込むようにしましょう。AWS認証情報ファイルを読み込む形が一般的に使いやすいです。
次に異なるアプリケーションには異なるアクセスキーを用意し、権限を最小化しましょう。これにより、アクセスキーが漏洩した際の被害範囲を抑えることができます。
また、アクセスキーの定期的な更新、不要となったアクセスキーの削除も有効です。
アクセスキーが漏洩してしまった場合
AWSアクセスキーの管理に細心の注意を払っていても、誤ってアクセスキーが漏洩させてしまう場合があります。GitHubなどに誤ってPushしてしまった場合、AWSから連絡が来ることがあります。
アクセスキーが漏洩してしまった場合、まず漏洩してしまったデータを削除し、次にアクセスキーを削除します。そして、不正利用されていないかどうかを全リージョンで確認し、他のユーザーを含めた全てのIAMユーザーのアクセスキーのローテーションを行う必要があります。
これらの作業は、開発規模が大きくなればなるほど大きなコストを伴う作業になるため、できるだけアクセスキーが漏洩しないように、管理マニュアルを作成するなど、細心の注意を払って管理するようにしましょう。
まとめ
今回はAWSアクセスキーの概要、作成方法、そしてアクセスキーを使う上での注意点について紹介しました。AWSの開発を複数人で行う際に、プログラムからのアクセスが必要になることが多く、アクセスキーを作成する必要があることが多いです。
AWSの開発を行う人はこの記事を参考に、付与する権限を最小限に抑えることで、リスクを最小化し、AWSアクセスキーを作成してみてください。
Search キーワード検索
Popular 人気の記事
-
AWS EBSとは?8つの特徴とEBSボリュームについても解説
公開: 更新: -
AWSのT2とT3の違いとは?用途に合った選択をしよう!
公開: 更新:
reccomended おすすめ記事
-
AWSエンジニアの将来性は?年収と必要なスキル6つをご紹介!
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
通信キャリア向け基盤構築/東京都渋谷区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/在宅ワーク
月給65万~65万円東京都渋谷区(神泉駅) -
各種対応/東京都新宿区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都新宿区(高田馬場駅) -
要件定義、構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都千代田区(飯田橋駅) -
運用構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給56万~56万円東京都千代田区(飯田橋駅) -
監視システムの保守、更改/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給55万~55万円東京都千代田区(神保町駅) -
各種対応/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】
月給60万~60万円東京都千代田区(虎ノ門駅)