シークレットを使用する - Amazon Data Firehose

シークレットを使用する

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 ロールに必要な許可を付与する必要があります。詳細については、「クロスアカウントアクセス」を参照してください。