スキップしてコンテンツを表示

DNSSEC を使用するという組織の要件を CloudFront に遵守させる方法を教えてください。

所要時間1分
0

Amazon CloudFront ディストリビューションを使用していますが、ドメインネームシステムセキュリティ拡張 (DNSSEC) を使用するという組織の規制要件に準拠する必要があります。

簡単な説明

デフォルトの CloudFront ドメイン cloudfront.net では、DNSSEC は許可されていません。ドメインの DNSSEC を有効にするには、まず DNSKEY リソースレコードセットを作成する必要があります。ただし、AWS は CloudFront ドメインの DNS レコードを管理しているため、DNSKEY レコードを設定することはできません。つまり、CloudFront ドメインの DNSSEC を直接有効化することはできません。代わりに、代替ドメインを使用して有効にする必要があります。

組織で DNSSEC の使用が必要な場合は、まず CloudFront ドメインからのディストリビューションへのアクセスをブロックします。次に、CloudFront ディストリビューションにアタッチされている代替ドメイン名または Canonical Name Record (CNAME) で DNSSEC を有効にします。

解決策

CloudFront からのアクセスをブロックする

ホストヘッダーに cloudfront.net ドメインを含むリクエストをブロックするには、AWS WAF または関数を使用します。

AWS WAF を使用する

以下のリクエストタイプのいずれかをブロックする AWS WAF ルールを使用します。

  • cloudfront.net で終わるホストヘッダー。
  • ディストリビューションのドメイン (d123abc.cloudfront.net など) が単一のヘッダー内にあるすべてのリクエスト。

関数を使用する

CloudFront 関数または AWS Lambda@Edge 関数を使用して、ホストヘッダーに cloudfront.net で終わる値が含まれるリクエストをすべてブロックします。コストが低く、パフォーマンスが速いため、CloudFront 関数を使用することをお勧めします。

次の CloudFront 関数の例では、ホストヘッダーに CloudFront ドメイン cloudfront.net を含むリクエストをブロックします。

function handler(event) {
  var request = event.request;
    // Extract the host header value
    var host = request.headers.host.value;
    // Check if the host header value ends with "cloudfront.net"
    if (host.endsWith('cloudfront.net')) {
      // Return a response to block the request
      return {
        statusCode: 403,
        statusDescription: 'Forbidden',
        headers: {
          'content-type': {
            value: 'text/plain'
          }
        },
        body: 'Access to this resource is forbidden.'
      };
    }
    // Allow the request to proceed
    return request;
  }

代替ドメイン名で DNSSEC を有効にする

CloudFront ドメインからのアクセスをブロックすると、代替ドメイン名 (CNAME) で DNSSEC を有効にできます。これを行うには、「Activating DNSSEC signing and establishing a chain of trust」(DNSSEC 署名を有効にし、信頼チェーンを確立する) の手順に従ってください。

ドメインをテストする

DNSSEC がご利用のドメインで正しく機能することを確認するには、Verisign のウェブサイトにある DNSSEC アナライザーを使用します。

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ