🎃

Codebuildを用いてECRへpushするときにAWSアクセスキーを使う時は要注意

2023/04/26に公開

はじめに

みなさん、CodeBuildには環境変数を設定することができるのはみなさんご存知かと思います。
今回の記事ではその環境変数を設定するときに注意してほしいことについてのご紹介です。

環境変数にはAWSアクセスキーを入れるな

Codebuildが裏側でAWS CLIが使用されていることをみなさんはご存知でしょうか?AWSのサービスにコマンドを使ってアクセスするには必須なツールになります。これは、CodeBuildでも当てはまります。

なので、CodeBuildを使うときはAWS CLIの仕様も確認する必要が出てくる時があります。
今回僕がつまづいた部分としてCodeBuildの環境変数に
・AWS_ACCESS_KEY_ID
・AWS_SECRET_ACCESS_KEY
を設定していました。設定した理由としては、サービスでLaravelを使用しており、その中でAWSにアクセスする必要がありました。そのために、アクセスキーとシークレットアクセスキーを環境変数に登録する必要がありました。そのため、CodeBuildで環境変数をLaravelが起動しているコンテナに設定するために、CodeBuildにアクセスキーを設定していました。

そのアクセスキーはクロスアカウントをする必要があったので、CodeBuildが起動していたAWSアカウントとは別のアカウントのアクセスキーを利用する必要がありました。
そのため、環境変数で登録してあったアクセスキーは別のアカウントのアクセスキーを環境変数に登録していました。

ですが、環境変数に別アカウントのAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYとを設定し他ために、Codebuildが使用していたCLIに登録されていたアクセスキーとシークレットアクセキーが上書きされてしまいました。そのため、CodeBuildからECRへイメージのpushができなくなってしまいました。

解決策

1環境変数の名前を変更する

・AWS_ACCESS_KEY_ID
・AWS_SECRET_ACCESS_KEY
という名前で環境変数に登録することで上書きされてしまうので、別の名前でアクセスキーを登録する

Seacret Manegerを使用する

そもそも
・AWS_ACCESS_KEY_ID
・AWS_SECRET_ACCESS_KEY
などのアクセスキーをCodeBuildに公開するような形で環境変数に登録するのはセキュリティ的に危険なので、こちらの方が正解かなと思います。
どうしても、使いたくない場合は1の方法が考えられます。

学び

今回の学びはAWS CodeBuildがAWS CLIを利用しており、環境変数にアクセスキーを登録するとそのアクセスキーが上書きされてしまうことでした〜

Discussion