シークレットを使用する
AWS Secrets Manager を使用して、Amazon Redshift、HTTP エンドポイント、Snowflake、Splunk、Coralogix、Datadog、Dynatrace、Elastic、Honeycomb、LogicMonitor、Logz.io、MongoDB Cloud、New Relic などのストリーミングの宛先に接続するための認証情報またはキーを保存することをお勧めします。
Firehose ストリームの作成時に、AWS マネジメントコンソールを通じて Secrets Manager を使用して、これらの宛先のために認証を設定できます。詳細については、「宛先の設定を構成する」を参照してください。あるいは、CreateDeliveryStream および UpdateDestination API オペレーションを使用して Secrets Manager による認証を設定することもできます。
Firehose は暗号化を使用してシークレットをキャッシュし、宛先への各接続のためにそれらを使用します。最新の認証情報が使用されるように、10 分ごとにキャッシュを更新します。
ストリームのライフサイクル中はいつでも、Secrets Manager からシークレットを取得する機能をオフにすることを選択できます。シークレットを取得するために Secrets Manager を使用しない場合は、代わりにユーザー名/パスワードまたは API キーを使用できます。
注記
Firehose ではこの機能には追加コストはかかりませんが、Secrets Manager へのアクセスとメンテナンスについては課金されます。詳細については、AWS Secrets Manager
シークレットを取得するために Firehose へのアクセスを付与する
Firehose が AWS Secrets Manager からシークレットを取得するには、シークレットにアクセスするために必要な許可と、シークレットを暗号化するキーを Firehose に提供する必要があります。
AWS Secrets Manager を使用してシークレットを保存および取得する場合、シークレットの保存場所と暗号化方法に応じて、いくつかの異なる設定オプションがあります。
-
シークレットが IAM ロールと同じ AWS アカウントに保存され、デフォルトの AWS マネージドキー (
aws/secretsmanager) で暗号化されている場合、Firehose が引き受ける IAM ロールに必要なのは、シークレットに対するsecretsmanager:GetSecretValue許可のみです。// secret role policy { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "Secret ARN" } ] }IAM ポリシーの詳細については、「Permissions policy examples for AWS Secrets Manager」を参照してください。
シークレットがロールと同じアカウントに保存されているが、カスタマーマネージドキー (CMK) で暗号化されている場合、ロールには
secretsmanager:GetSecretValue許可とkms:Decrypt許可の両方が必要です。また、CMK ポリシーは、IAM ロールがkms:Decryptを実行することを許可する必要があります。シークレットがロールとは異なる AWS アカウントに保存されており、デフォルトの AWS マネージドキーで暗号化されている場合、シークレットが AWS マネージドキーを使用して暗号化されているときには、Secrets Manager はクロスアカウントアクセスを許可しないため、この設定は使用できません。
-
シークレットが別のアカウントに保存され、CMK を使用して暗号化されている場合、IAM ロールにはシークレットに対する
secretsmanager:GetSecretValue許可と CMK に対するkms:Decrypt許可が必要です。シークレットのリソースポリシーと他のアカウントの CMK ポリシーも、IAM ロールに必要な許可を付与する必要があります。詳細については、「クロスアカウントアクセス」を参照してください。