質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

受付中

AWS ALB CloudFormationの設定で、接続先の特定のURLを443/tcp公開にしたいです。

hanju8810tt
hanju8810tt

総合スコア14

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0評価

1クリップ

189閲覧

投稿2022/08/03 23:22

前提

・AWS Cloudformationでリソースをコードで管理・構築しています。
以下のソースコードがそれにあたりますが、会社を特定できる情報は省いたり、伏字を使ったりしています。

実現したいこと

・ListnerRuleを使い、「/api/v1/sstart/*」にアクセスしたときのみセキュリティグループ「ElbSecurityGroupFullOpen:」を適用して
443/tcp(フルオープン)にしたいです。
・そのほかのURLにアクセスしたときには「ElbSecurityGroup」を適用して送信元IPによりアクセスを制限したいです。

発生している問題・エラーメッセージ

・このコード上部にある制限付きのセキュリティグループ「ElbSecurityGroup」が適用されてしまい、フルオープンにならないです。
※エラーにはなりません。  

該当のソースコード

Cloudformation(yaml形式)

AWSTemplateFormatVersion: 2010-09-09 Parameters: Environment: Type: String AllowedValues: - prd - stg - dev SystemName: Type: String Default: "hanju" DomainName: Type: String PublicHostedZoneId: Type: String pCertificateArn: Type: String pBlueGrenTarget: Type: String AllowedValues: - blue - green Conditions: DevResource: !Equals [!Ref Environment, dev] StgResource: !Equals [!Ref Environment, stg] PrdStgResource: !Or [ !Equals [!Ref Environment, prd],!Equals [!Ref Environment, stg] ] AccountResource: !Or [ !Equals [!Ref Environment, prd],!Equals [!Ref Environment, stg], !Equals [!Ref Environment, dev] ] BlueTarget: !Equals [!Ref pBlueGrenTarget, blue] Resources: # SecurityGroup ElbSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Only HTTPS Access SecurityGroupIngress: - IpProtocol: "TCP" Description: "Allow From VT Vpn NatGateway PublicIP Address" CidrIp: !Sub "${VpnPublicIP}/32" FromPort: 443 ToPort: 443 - IpProtocol: "TCP" Description: "Allow From NatGateway1 ElasticIP Address" CidrIp: Fn::Join: - "" - - Fn::ImportValue: !Sub "${SystemName}-${Environment}-natgateway-eip01" - "/32" FromPort: 443 ToPort: 443 - IpProtocol: "TCP" Description: "Allow From NatGateway2 ElasticIP Address" CidrIp: Fn::Join: - "" - - Fn::ImportValue: !Sub "${SystemName}-${Environment}-natgateway-eip02" - "/32" FromPort: 443 ToPort: 443 VpcId: Fn::ImportValue: !Sub "${SystemName}-${Environment}-vpc" ElbSecurityGroupFullOpen: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow https to client host VpcId: Fn::ImportValue: !Sub "${SystemName}-${Environment}-vpc" SecurityGroupIngress: - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 0.0.0.0/0 # ##### # v3 resources # ##### hanjuLoadBalancer: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: Name: !Join - '' - - !Ref SystemName - "-" - !Ref Environment - "-hanju-elb" Subnets: - Fn::ImportValue: !Sub "${SystemName}-${Environment}-public-subnet01" - Fn::ImportValue: !Sub "${SystemName}-${Environment}-public-subnet02" SecurityGroups: - !Ref ElbSecurityGroup - Fn::ImportValue: !Sub "${SystemName}-${Environment}-default-sg" Tags: - Key: Name Value: !Join - '' - - !Ref SystemName - "-" - !Ref Environment - "-hanju-elb" Scheme: internet-facing LoadBalancerAttributes: - Key: access_logs.s3.enabled Value: true - Key: access_logs.s3.bucket Value: !Sub "logs-${AWS::AccountId}" hanjuLoadBalancerListener: Type: AWS::ElasticLoadBalancingV2::Listener Properties: LoadBalancerArn: !Ref hanjuLoadBalancer Port: 443 Protocol: HTTPS SslPolicy: ELBSecurityPolicy-FS-1-2-Res-2020-10 Certificates: - CertificateArn: !Ref pCertificateArn DefaultActions: - Type: forward TargetGroupArn: !If [ BlueTarget, !Ref hanjuTargetGroupBlue, !Ref hanjuTargetGroupV3Green ] hanjuTestLoadBalancerListener: Type: AWS::ElasticLoadBalancingV2::Listener Properties: LoadBalancerArn: !Ref hanjuLoadBalancer Port: 8443 Protocol: HTTPS SslPolicy: ELBSecurityPolicy-FS-1-2-Res-2020-10 Certificates: - CertificateArn: !Ref pCertificateArn DefaultActions: - Type: forward TargetGroupArn: !If [ BlueTarget, !Ref hanjuTargetGroupBlue, !Ref hanjuTargetGroupV3Green ] hanjuLoadBalancerListenerRule: Type: 'AWS::ElasticLoadBalancingV2::ListenerRule' Properties: Actions: - Type: forward Conditions: - Field: path-pattern PathPatternConfig: Values: - "/api/v1/sstart/*" ListenerArn: !Ref hanjuTestLoadBalancerListener Priority: 1 hanjuTestLoadBalancerListenerRule: Type: 'AWS::ElasticLoadBalancingV2::ListenerRule' Properties: Actions: - Type: forward Conditions: - Field: path-pattern PathPatternConfig: Values: - "/api/v1/sstart/*" ListenerArn: !Ref hanjuTestLoadBalancerListener Priority: 1 hanjuTargetGroupBlue: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: Name: !Sub "${SystemName}-${Environment}-blue-tg" VpcId: Fn::ImportValue: !Sub "${SystemName}-${Environment}-vpc" Port: 80 Protocol: HTTP TargetType: ip HealthCheckPath: / hanjuTargetGroupV3Green: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: Name: !Sub "${SystemName}-${Environment}-green-tg" VpcId: Fn::ImportValue: !Sub "${SystemName}-${Environment}-vpc" Port: 80 Protocol: HTTP TargetType: ip HealthCheckPath: / hanjuElbRecord: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref PublicHostedZoneId AliasTarget: DNSName: !GetAtt hanjuLoadBalancer.DNSName HostedZoneId: !GetAtt hanjuLoadBalancer.CanonicalHostedZoneID Name: !Sub "api.${DomainName}" Type: "A"

試したこと

やはり、ALBのリスナールールで変更するのだと思うのですがわかりません。

補足情報(FW/ツールのバージョンなど)

とくになし

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。