New Relic ワークフロー自動化が AWS アカウントでアクションを実行することを承認します。認証情報をハードコーディングしたり、セキュリティを侵害したりすることなく、ワークフローが EC2、SQS、DynamoDB などのAWSサービスと安全にやり取りできるようにする認証方法を設定します。
前提条件
AWS 認証情報を設定する前に、次のものを用意してください。
- IAM ロールまたはユーザーを作成する権限を持つ AWS アカウント。
- New Relic アカウント ID 。
- AWS IAM コンソールへの管理者アクセス。
必要な権限を理解する
資格情報を作成する前に、ワークフローに必要な権限を理解してください。ワークフローが実際に使用する権限のみを付与します。これにより、最小権限の原則が遵守され、セキュリティ リスクが最小限に抑えられます。
一般的なワークフロー権限
| ワークフロータイプ | 必要なAWS権限 | 説明 |
|---|---|---|
| EC2管理 | ec2:DescribeInstancesec2:StopInstancesec2:StartInstancesec2:ModifyInstanceAttribute | アラートに応じて EC2 インスタンスを停止、開始、または変更する |
| SQSメッセージング | sqs:SendMessagesqs:GetQueueAttributes | 下流処理のために SQS キューにメッセージを送信する |
| APIゲートウェイ | apigateway:GETapigateway:PUT | API Gateway のデプロイメントまたは設定をロールバックする |
| システムマネージャー | ssm:CreateDocumentssm:DeleteDocumentssm:StartAutomationExecutionssm:GetAutomationExecution | 自動化ランブックを実行する |
| DynamoDB | dynamodb:Querydynamodb:GetItemdynamodb:PutItem | DynamoDB テーブルからの読み取りまたは書き込み |
ヒント
読み取り専用権限 ( Describe* 、 Get* 、 List* ) から開始し、必要に応じて書き込み権限 ( Put* 、 Create* 、 Delete* ) を追加します。これにより、テスト中の偶発的な破壊的な操作を防止できます。
完全な IAM ポリシー テンプレートについては、以下のポリシー例を参照してください。
認証を設定する
上の表から、ユースケースに合った方法を選択してください。
IAM ロールを使用すると、New Relic は永続的なアクセスキーを必要とせずに AWS アカウントの一時的な認証情報を引き受けることができます。
IAM ロールの特性:
資格情報は自動的に更新されます
アクセスは設計上、時間制限があります
すべてのアクションはAWS CloudTrailにログとして記録されます
AWS セキュリティのベストプラクティスに準拠
AWSでロールを作成する
- AWS IAMコンソールにサインインする
- Roles > Create role > Trusted entity typeに移動し、 AWS account > another AWS accountを選択します。
- Account ID [アカウント ID]フィールドに次のように入力します。
253490767857 - Options [オプション]でRequire external ID [外部IDを要求するに]チェックを入れます
- External ID [外部 ID]フィールドに New Relic アカウント ID を入力し、 Next [次へ]をクリックします。
- 持っていないですか?アカウントIDはこちら
- Add permissions [権限の追加]ページで、ワークフローに基づいてポリシーを添付します。
- EC2 ワークフローの場合:
AmazonEC2ReadOnlyAccessをアタッチするか、カスタムポリシーを作成します - SQS ワークフローの場合:
AmazonSQSFullAccessを添付するか、特定のキューに制限します - その他のサービスについては、以下の必要なAWS権限を参照してください。
Next[次へ]をクリックします。
ロール名を入力してください:
NewRelicWorkflowAutomationRole(または希望する名前)オプションで説明「New Relic ワークフロー自動化が AWS でアクションを実行できるようにする」を追加し、 Create role [ロールの作成]をクリックします。
信頼ポリシーを確認する
ロールを作成したら、信頼関係を確認します。
IAMコンソールで、新しく作成したロールを選択します。
Trust relationships [信頼関係]タブをクリックします
ポリシーがこの構造と一致していることを確認します (
<YOUR_NR_ACCOUNT_ID>実際のアカウント ID に置き換えます)。{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "sts:AssumeRole","Principal": {"AWS": "arn:aws:iam::253490767857:root"},"Condition": {"StringEquals": {"sts:ExternalId": "<YOUR_NR_ACCOUNT_ID>"}}}]}ロールARNをコピーする
ワークフローを構成するには、ロール ARN が必要です。
IAMコンソールでロールを選択します
Summary [概要]セクションで、 ARNフィールドを見つけます。
完全な ARN をコピーします。次のようになります。
arn:aws:iam::123456789012:role/NewRelicWorkflowAutomationRoleこのARNを安全に保存します。ワークフロー設定に直接貼り付けます。
ヒント
重要:ロール ARN はワークフロー入力に直接渡されます。シークレット マネージャーには保存しないでください。これらは機密性の高い資格情報ではなく、リソース識別子です。
ロールが設定されました。AWSアクセスが必要なワークフロー設定で ARN を使用します。
この方法は、テスト環境の場合や IAM ロールがサポートされていない場合に使用します。アクセス キーは手動でのローテーションを必要とする長期にわたる資格情報です。
使用例:
テストおよび開発環境
クロスアカウントロールの引き継ぎをサポートしないAWS設定
簡素化された認証ワークフロー
注意
アクセス キーは長期間有効な資格情報です。定期的に(90 日ごとに)ローテーションし、ワークフローに必要なものだけにアクセスを制限します。
IAM ユーザーを作成する
- AWS IAMコンソールにサインインする
- Users > Create userに移動し、ユーザー名:
workflow-automation-user(または任意の名前) を入力します。 - Nextをクリックします
- Set permissions [権限の設定]ページで、Attach policies directly [ポリシーを直接アタッチするを]選択します。
- ワークフローに基づいてポリシーを検索して選択します。
- SQSの場合: 選択
AmazonSQSFullAccess - EC2の場合: 選択
AmazonEC2ReadOnlyAccess - または、権限を制限したカスタムポリシーを作成します(推奨)
Next [次へ]をクリックし、 Create user [ユーザーを作成]をクリックします。
アクセスキーを生成する
ユーザーリストで、新しく作成したユーザーを選択します
Security credentials [セキュリティ資格情報]タブをクリックします
Access keys [アクセスキー]セクションで、Create access key [アクセスキーの作成を]選択します。
Application running outside AWS [AWS外で実行されているアプリケーション]を選択し、 Next [次へ]をクリックします。
(オプション) 説明タグを追加します:「New Relic ワークフロー自動化」
Create access key [アクセスキーの作成を]選択
両方の資格情報をすぐにコピーします。
アクセスキーID (
AKIA...で始まる)秘密アクセスキー(一度だけ表示)
重要
AWS は、作成時にシークレットアクセスキーを 1 回だけ表示します。保存しない場合は、新しいキー ペアを生成する必要があります。
資格情報を安全に保存する
ワークフローに AWS 認証情報をハードコードしないでください。代わりに、New Relic のシークレット マネージャーに保存します。
このミューテーションを実行してアクセス キー ID を保存します (プレースホルダーの値を置き換えます)。
mutation {secretsManagementCreateSecret(scope: { type: ACCOUNT, id: "YOUR_NR_ACCOUNT_ID" }namespace: "aws"key: "awsAccessKeyId"description: "AWS Access Key ID for workflow automation"value: "YOUR_AWS_ACCESS_KEY_ID") {key}}シークレット アクセス キーに対して別のミューテーションを実行します。
mutation {secretsManagementCreateSecret(scope: { type: ACCOUNT, id: "YOUR_NR_ACCOUNT_ID" }namespace: "aws"key: "awsSecretAccessKey"description: "AWS Secret Access Key for workflow automation"value: "YOUR_AWS_SECRET_ACCESS_KEY") {key}}次の構文を使用して、ワークフローでこれらのシークレットを参照します。
${{ :secrets:awsAccessKeyId }}ヒント
namespaceフィールドを使用して、環境 (aws-prod、aws-staging) またはチーム名別にシークレットを整理します。
セッション トークンは、自動的に期限が切れる一時的な資格情報を提供します。
使用例:
ローカル開発とテスト
資格情報のローテーションが必要なCI/CDパイプライン
時間制限付きアクセス(通常 1 ~ 12 時間)のコンプライアンス要件がある環境
前提条件:
引き受けることができる既存のIAMロール
一時的な認証情報を生成する
ターミナルを開き、次のコマンドを実行します (ロール ARN に置き換えます)。
bash$aws sts assume-role \>--role-arn "arn:aws:iam::YOUR_ACCOUNT:role/YOUR_ROLE" \>--role-session-name "WorkflowAutomationSession"AWS CLI を初めて使用する場合は、
aws configureを使用して設定し、アクセス認証情報を入力する必要がある場合があります。
AWS は 3 つの値を返します。3 つすべてが必要です。
{"Credentials": {"AccessKeyId": "ASIAIOSFODNN7EXAMPLE","SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY","SessionToken": "FQoGZXIvYXdzEBk...","Expiration": "2025-01-25T12:00:00Z"}}3 つの資格情報すべてをシークレット マネージャーに保存します。
AccessKeyId保存先awsAccessKeyIdSecretAccessKey保存先awsSecretAccessKeySessionToken保存先awsSessionToken注意
セッション トークンは期限切れになります (通常 1 時間後)。
Expirationタイムスタンプの前に更新するようにリマインダーを設定してください。そうしないと、認証エラーが発生してワークフローが失敗します。
ワークフローで資格情報を使用する
認証を設定したら、ワークフロー構成で資格情報を参照します。
IAM ロール(推奨)
ロール ARN をワークフロー入力に直接貼り付けます。シークレット マネージャーは必要ありません。
awsRoleArn: arn:aws:iam::123456789012:role/NewRelicWorkflowAutomationRoleヒント
ロール ARN はリソース識別子であり、機密性の高い認証情報ではありません。これらを Secrets Manager に保存せず、ワークフロー設定に直接貼り付けてください。
IAM ユーザーまたはセッショントークン
アクセス キーの参照シークレット マネージャー:
awsAccessKeyId: ${{ :secrets:awsAccessKeyId }}awsSecretAccessKey: ${{ :secrets:awsSecretAccessKey }}awsSessionToken: ${{ :secrets:awsSessionToken }} # Only for session tokensNew Relic は実行時にシークレットを取得し、AWS で認証してから、シークレットを破棄します。資格情報はログやワークフロー履歴に表示されることはありません。
ポリシーの例
一般的なワークフロー タイプには、これらの完全な IAM ポリシー テンプレートを使用します。それぞれは、特定のリソースへのアクセスを制限することで、最小権限の原則に従います。
追加リソース
包括的な AWS 権限リファレンス:
- AWSインテグレーション管理ポリシー: サービス別のAWS権限の完全なリストと、適応できる CloudFormation テンプレート
- AWS APIポーリングの設定:追加の設定パターン
重要
これらのリソースは、クラウド統合 (監視) にアカウント ID 754728514883を使用します。 ワークフローの自動化には、常に253490767857を使用します。
次のステップ
AWS 認証情報を設定したら、ワークフローを作成できます。
ワークフローを作成します。
- AWS アクションの参照: 利用可能な AWS 操作 (EC2、SQS、DynamoDB など) を表示します。
- テンプレートを使用する: 一般的な AWS 自動化タスク用に事前設定されたワークフローをデプロイする
- カスタム ワークフローの作成: 特定の要件に合わせてワークフローを構築します
通知を設定します。
- 送信先の設定: ワークフロー イベントの Slack、PagerDuty、メール、または Webhook 通知を構成する