
これまでの記事で、
まで構築しました。
今回は、ローカルPCからAWSを操作するために、AWS CLIをIAM Identity Center(AWS SSO)へ接続します。
これにより、長期アクセスキーを発行せず、安全にAWS CLIやTerraformを利用できるようになります。
以前はAWS CLIを利用する際、IAM Userを作成し、
を発行していました。
IAM User
├── Access Key ID
└── Secret Access Key
しかし、この方法にはいくつかの課題があります。
現在AWSでは、人によるAWSへのアクセスには**IAM Identity Center(旧AWS SSO)**を利用することが推奨されています。
参考
AWS CLIは、IAM Identity Centerへログインし、一時的な認証情報(Temporary Credentials)を取得します。
Developer PC
│
aws configure sso
│
▼
IAM Identity Center
│
▼
AdministratorAccess
│
▼
Dev Account
つまり、
という、安全性の高い認証方式になります。
まずAWS CLI v2をインストールします。
インストール後、次のコマンドを実行します。
aws configure sso
すると、対話形式で設定が始まります。
SSO session name (Recommended):
ここはローカルPC上だけで利用する設定名です。
今回は
coiai
としました。
好きな名前で問題ありません。
SSO start URL
IAM Identity CenterのアクセスポータルURLを入力します。
例
https://d-xxxxxxxx.awsapps.com/start
このURLは
IAM Identity Center
→ Settings
から確認できます。
SSO region
IAM Identity Centerを有効化したリージョンを指定します。
今回は東京リージョンなので
ap-northeast-1
を指定しました。
SSO registration scopes
デフォルトの
sso:account:access
をそのまま利用します。
通常は変更する必要はありません。
途中でブラウザが自動的に起動し、
IAM Identity Centerへログインします。
認証が成功すると、
AWS CLIが利用可能なAWSアカウントを取得します。
今回は
The only AWS account available to you is:
120896952796
となりました。
さらに
AdministratorAccess
が利用可能なPermission Setとして表示されました。
続いて
Default client Region
では
ap-northeast-1
を指定しました。
また
CLI default output format
では
json
を選択しています。
JSONはTerraformやスクリプトとの相性が良いため、おすすめです。
最後に
CLI profile name
を設定します。
今回は
coiai-dev
という名前にしました。
この名前でAWS CLIが利用できます。
最後に
aws sts get-caller-identity --profile coiai-dev
を実行しました。
結果は次の通りです。
{
"UserId": "AROAXXXXXXXXX:Hattori",
"Account": "120896952796",
"Arn": "arn:aws:sts::120896952796:assumed-role/AWSReservedSSO_AdministratorAccess_xxxxxxxxx/Hattori"
}
ここで重要なのは
assumed-role/AWSReservedSSO_AdministratorAccess
という部分です。
これは、IAM Userではなく、IAM Identity CenterのPermission Setから発行されたIAMロールを引き受けて認証されていることを意味します。
つまり、長期アクセスキーを一切利用せずにAWS CLIへログインできています。
Terraformでは、このプロファイルを指定するだけで利用できます。
provider "aws" {
profile = "coiai-dev"
region = "ap-northeast-1"
}
CLIとTerraformが同じ認証情報を利用するため、アクセスキーをコードへ記述する必要がありません。
ここまでで、人によるAWSアクセスの認証基盤が完成しました。
今後は
Developer
│
IAM Identity Center
│
AWS CLI
│
Terraform
│
Dev Account
という流れでインフラをコード管理していきます。
その後はGitHub ActionsとOIDCを連携し、人だけでなくCI/CDも安全に認証できる環境を構築する予定です。
IAM Identity CenterとAWS CLIを連携することで、
という構成を実現できました。
AWS Organizations、IAM Identity Center、AWS CLIの3つが揃ったことで、今後はTerraformを中心としたInfrastructure as Codeの環境を構築していきます。
この記事をシェア
coiai
この記事もおすすめ
株式会社coiaiは、「想像できることを美しく実現」を掲げ、XR・Web・アプリ・システム開発およびDX支援を行う会社です。 創業2022年、東京都練馬区に本社を置き、要件のヒアリングからPoC(概念実証)、本番運用まで一貫して伴走します。 まずはお気軽にご相談ください。
主なご相談内容
詳しい会社情報は会社概要ページでご覧いただけます。