Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【要望】S3の署名付きURLに対するIP制限 #703

Open
kazuya9831 opened this issue Nov 5, 2024 · 0 comments
Open

【要望】S3の署名付きURLに対するIP制限 #703

kazuya9831 opened this issue Nov 5, 2024 · 0 comments

Comments

@kazuya9831
Copy link

kazuya9831 commented Nov 5, 2024

機能リクエストは何か問題に関連していますか?背景を説明してください

RAGチャットを使った場合、参考ドキュメントが閲覧できるようにS3の署名付きURLが発行されているかと存じます。

https://github.com/aws-samples/generative-ai-use-cases-jp/blob/main/packages/cdk/lambda/getFileDownloadSignedUrl.ts#L21

また、本ソリューションではallowedIpV4AddressRanges、allowedIpV6AddressRangesオプションで
システムへのアクセスにIP制限を実装できると思いますが、
S3の署名付きURLに対してもIP制限を加えていただきたいと考えました。

https://github.com/aws-samples/generative-ai-use-cases-jp/blob/main/packages/cdk/cdk.json#L50-L51

S3の署名付きURLは1分と期限は短く発行しているもののリンクを知っていれば誰でもアクセスできる認識です。
RAGを利用する場合、社内のドキュメントなどの機密レベルが高い情報を保存するケースも多いと思うため、
IP制限が加われば、より安心かなと考えております。

追加 or 改善したい機能について

allowedIpV4AddressRanges、allowedIpV6AddressRangesオプションが有効な場合、
S3の署名付きURLに対してもIP制限を実施いただけないでしょうか。

補足

仮に実装する場合の改修イメージを私なりに考えて見たので合わせて記載させていただきます。
(動作確認まではできていないです。)

    allowedIpV4AddressRanges,
    allowedIpV6AddressRanges,
  allowedIpV4AddressRanges: string[] | null;
  allowedIpV6AddressRanges: string[] | null;
    if (
      props.allowedIpV4AddressRanges ||
      props.allowedIpV6AddressRanges ||
    ) {
        // S3バケットポリシーに条件付きアクセス許可を追加
        dataSourceBucket.addToResourcePolicy(new iam.PolicyStatement({
          effect: iam.Effect.DENY,
          principals: '*',
          actions: ['s3:GetObject'],
          resources: [`${dataSourceBucket.bucketArn}/*`],
          conditions: {
            "ForAnyValue:IpAddress": {
              "aws:SourceIp": [...(allowedIpV4AddressRanges || []), ...(allowedIpV6AddressRanges || [])]
            },
            "ForAnyValue:StringEquals": {
              "aws:PrincipalArn": [knowledgeBaseRole.roleArn]
            }
          }
        }));
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant