メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

秘密キーを Amazon S3 に安全に保存する

パブリック証明書の署名に使用するプライベートキーはプライベートであるため、ソースコードにコミットしないでください。プライベートキーファイルを Amazon S3 にアップロードした後にアプリケーションのデプロイ時に Amazon S3 からダウンロードするように Elastic Beanstalk を設定することで、設定ファイルにプライベートキーが保存されるのを回避できます。

以下の例で示している設定ファイルResourcesfiles のセクションでは、Amazon S3 バケットからプライベートキーファイルをダウンロードしています。

例 .ebextensions/privatekey.config

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName: 
            "Fn::GetOptionSetting": 
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
  # Private key
  /etc/pki/tls/certs/server.key:
    mode: "000400"
    owner: root
    group: root
    authentication: "S3Auth"
    source: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-123456789012/server.key

例に使用しているバケット名と URL は独自のものに置き換えてください。このファイルの最初のエントリは、環境の Auto Scaling グループのメタデータに S3Auth という名前の認証方法を追加します。お客様の環境用にカスタムインスタンスプロファイルを設定している場合はそのプロファイルが使用されますが、設定していない場合は aws-elasticbeanstalk-ec2-role のデフォルト値が適用されます。デフォルトのインスタンスプロファイルには、Elastic Beanstalk ストレージバケットからの読み取り権限があります。別のバケットを使用する場合は、インスタンスプロファイルに許可を追加します

2 番目のエントリは、S3Auth 認証方法を使用して、指定された URL からプライベートキーをダウンロードし、/etc/pki/tls/certs/server.key に保存します。プロキシサーバーは、この場所からプライベートキーを読み取って、インスタンスで HTTPS 接続を終了できます。

環境の EC2 インスタンスに割り当てられるインスタンスプロファイルには、指定したバケットからキーオブジェクトを読み取るための権限がなければなりません。インスタンスプロファイルが IAM のオブジェクトを読み取る権限を持っており、バケットとオブジェクトの読み取り権限がインスタンスプロファイルを許可しないことを確認します。

バケットの権限を表示するには

  1. Amazon S3 マネジメントコンソールを開きます。

  2. バケットを選択します。

  3. [Properties] を選択して、[Permissions] を選択します。

  4. アカウントがバケットの読み取り権限を持っていることを確認します。

  5. バケットポリシーが添付されている場合は、[Edit bucket policy] を選択して編集します。 [Edit bucket policy] を選択して、バケットに割り当てられている権限を表示します。