はじめに
本記事では、AWS AppRunnerを使用してアプリケーションをデプロイする際に、AWS Secrets Managerを活用して機密情報を安全に管理する方法について解説します。
シークレットの作成
-
シークレットのタイプ選択
- 「その他のシークレットタイプ」を選択します。
- 「キー」と「値」のペアを追加します。
-
暗号化キーの選択
- デフォルトの
aws/secretsmanager
を選択します。これにより、KMSの設定を行わずにAWSが暗号化を管理してくれます。
- デフォルトの
-
名前とタグの設定
- シークレットに分かりやすい名前を付けます。
- 必要に応じてタグを追加します。リソースのアクセス許可は後述しますので、この段階では設定しなくて構いません。
-
シークレットの作成
- すべての設定を確認し、「シークレットの作成」をクリックします。
ポリシーにて、カスタムポリシーを作成
AWS IAMでAppRunnerがSecrets Managerにアクセスできるように、カスタムポリシーを作成します。
-
IAMコンソール
に移動し、ポリシー
>ポリシーの追加
を選択します。 -
JSON
タブを選択し、以下のポリシーをポリシーエディタに貼り付けます。 - 次の画面でポリシー名を
apprunner-secret-custom-key
と指定し、ポリシーを作成します。
ポリシーの内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:ap-northeast-1:851725429673:secret:roten-app-secret-MYSQL-HOST-mgA22t"
}
]
}
IAMロールを作成
以下の記事を参考にAppRunnerがSecretManagerにアクセスするためのIAMロールを作成しました。
-
IAMコンソールのロールを開き、IAMロールを作成していきます。
-
ユースケース
にEC2
を選択
3. 次へ
をおして許可ポリシーにIAMFullAccess
, SecretsManagerReadWrite
, apprunner-secret-custom-key
(先ほど作成したカスタムポリシーの名前)を選択します。
(参考:https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/auth-and-access.html#auth-and-access_admin)
4. 次へ
を押して、ロール名を入力し、カスタム信頼ポリシーを以下のように設定します。
カスタム信頼ポリシーの内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "tasks.apprunner.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
AppRunnerで環境変数とセキュリティの追加
-
セキュリティ
>アクセス許可
で先ほど作成したIAMロールを指定します。これにより、AppRunnerがSecrets Managerからシークレットを取得する権限を持つようになります。
最後に
本記事では、AWS AppRunnerを使用してアプリケーションをデプロイする際に、AWS Secrets Managerを活用して機密情報を安全に管理する方法について解説しました。カスタムポリシーやIAMロールなど、複雑な概念が多く登場し、最初は苦労しましたが、様々な参考記事を活用しながら一つずつ手順を進めることで、目標を達成できました。この調子で、セキュリティにも強い開発ができるエンジニアを目指して頑張っていきたいと思います。