INTEGRITY Dokumentace

Chraňte přístup k bucketům Amazon S3 pomocí Cloudflare Zero Trust

Tento návod ukazuje, jak zabezpečit přístup k bucketům Amazon S3 pomocí Cloudflare Zero Trust tak, aby data v těchto bucketech nebyla veřejně vystavena na internetu. Cloudflare Access můžete kombinovat s VPC endpoints od AWS. Enterprise může navíc využít zásady egress Cloudflare Gateway s vyhrazenými odchozími IP adresami.

Metoda 1: přes Cloudflare Access a VPC endpoints

flowchart TB
    cf1[/Cloudflare One Client or clientless users/]--Access policy-->cf2{{Cloudflare}}
    cf2--Cloudflare Tunnel-->vpc1

    subgraph VPC
    vpc1[EC2 VM]-->vpc2[VPC endpoint]
    end
    vpc2-->s3_1

    subgraph S3 service
    s3_1([S3 bucket])
    end

    i1[/Users outside </br> Zero Trust/]-. "S3 access denied" .->s3_1

Předpoklady

1. Vytvořte endpoint VPC v AWS

  1. V AWS dashboard, přejděte na Služby > Síťování a doručování obsahu > VPC.
  2. V části Virtuální privátní cloud, přejděte na Endpointy.
  3. Vyberte Vytvořit endpoint a pojmenujte endpoint.
  4. Vyberte služby AWS jako kategorii služby.
  5. V Služby, vyhledejte a vyberte službu S3 ve stejném regionu jako VPC. Pokud je to například region AWS Europe (London) - eu-west-2, odpovídající služba S3 se jmenuje com.amazonaws.eu-west-2.s3 s typem Gateway.
  6. V VPC, vyberte svou VPC, která obsahuje EC2 VM hostující daemon Cloudflare tunnelu.
  7. V Směrovací tabulky, vyberte tabulku tras přiřazenou k VPC.
  8. V Zásada, vyberte Plný přístup.
  9. Vyberte Vytvořit endpoint.

Po vytvoření VPC endpointu se v tabulce tras VPC objeví nový záznam, jehož cílem je váš VPC endpoint. Záznam bude mít formát vpce-xxxxxxxxxxxxxxxxx.

2. Nastavte zásadu bucketu pro přístup VPC

  1. Přejděte na Služby > Úložiště > S3.
  2. V Amazon S3 přejděte na Buckets > <your-S3-bucket> > Oprávnění.
  3. Zakázat Blokovat veškerý veřejný přístup.
  4. V Zásada bucketu, přidejte následující zásadu:
{
	"Version": "2012-10-17",
	"Id": "VPCe",
	"Statement": [
		{
			"Sid": "VPCe",
			"Effect": "Allow",
			"Principal": "*",
			"Action": "s3:*",
			"Resource": [
				"arn:aws:s3:::<your-S3-bucket01>",
				"arn:aws:s3:::<your-S3-bucket01>/*"
			],
			"Condition": {
				"StringEquals": {
					"aws:SourceVpce": "<your-vpc-endpoint>"
				}
			}
		}
	]
}

Zásada vašeho bucketu umožní vašemu VPC přístup k vašemu bucketu S3.

3. Povolte statické webové hostování pro bucket S3

  1. Vraťte se do Amazon S3 a přejděte na Buckets > <your-S3-bucket01> > Vlastnosti.
  2. V Hosting statických webových stránek, vyberte Úprava.
  3. Povolit Hosting statických webových stránek.
  4. Zadejte dokumenty Index a Error pro bucket S3.
  5. Vyberte Uložit změny.

Endpoint webu bucketu bude dostupný na adrese http://<your-S3-bucket01>.s3-website.<aws-region>.amazonaws.com. Vzhledem k zásadě bucketu bude tento webový endpoint přístupný pouze z VPC, na kterém je nakonfigurován endpoint VPC.

4. Přidejte publikovanou aplikaci do Cloudflare Tunnel

  1. V Cloudflare dashboardu přejděte na Sítě > Tunnels.

    Přejděte na Tunnels ↗
  2. Vyberte svůj tunel a poté přejděte na Trasy kartě.

  3. Vyberte Přidat trasu, pak vyberte Publikovaná aplikace.

  4. Zadejte subdoménu, kterou bude vaše organizace používat pro přístup k bucketu S3. Například s3-bucket.<your-domain>.com.

  5. V URL služby, zadejte http://<your-S3-bucket01>.s3-website.<aws-region>.amazonaws.com.

  6. V Další nastavení aplikace > Nastavení HTTP, zadejte HTTP Host Header jako <your-S3-bucket01>.s3-website.<aws-region>.amazonaws.com.

  7. Vyberte Uložit hostname.

Váš Cloudflare Tunnel bude ukončen na AWS VPC pomocí vašeho veřejného hostname.

5. Omezte přístup k S3 pomocí zásady Access

  1. Přejděte na Řízení přístupu > Aplikace.
  2. Vyberte Vytvořit novou aplikaci.
  3. Vyberte Vlastní hosting a soukromé.
  4. Vyberte Přidejte veřejný hostname a zadejte veřejný hostitelský název používaný vaším Tunnelem. Například s3-bucket.<your-domain>.com.
  5. Přidejte Zásady Access určit, kteří uživatelé a aplikace mají přístup k vašemu bucketu. Volitelně můžete vytvořit token služby zásadu k automatickému ověřování přístupu k vašemu S3 bucketu.
  6. Postupujte podle zbývajících kroky pro vytvoření aplikace s vlastním hostováním k publikování aplikace.

Uživatelé a aplikace, kteří se úspěšně ověří přes Cloudflare Access, mohou přistupovat k vašemu S3 bucketu na https://s3-bucket.<your-domain>.com.

Metoda 2: přes zásady egress v Cloudflare Gateway

flowchart TB
    cf1[/Cloudflare One Client users/]--Egress policy-->cf2{{Cloudflare}}
    cf2--Egress with dedicated IP-->i1[Internet]
    i1-->s3_1

    subgraph S3 Service
    s3_1([S3 bucket])
    end

    i2[/Users outside </br> Zero Trust/]-. "IPs denied" .->s3_1

Předpoklady

1. Nastavte zásadu bucketu pro omezení přístupu na konkrétní IP adresu

  1. V AWS dashboard, přejděte na Služby > Úložiště > S3.
  2. Přejděte na Buckets > <your-S3-bucket02> > Oprávnění.
  3. Zakázat Blokovat veškerý veřejný přístup.
  4. V Zásada bucketu, přidejte následující zásadu:
{
	"Version": "2012-10-17",
	"Id": "SourceIP",
	"Statement": [
		{
			"Sid": "SourceIP",
			"Effect": "Allow",
			"Principal": "*",
			"Action": "s3:*",
			"Resource": [
				"arn:aws:s3:::<your-S3-bucket02>",
				"arn:aws:s3:::<your-S3-bucket02>/*"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "<your-dedicated-ip>/32"
				}
			}
		}
	]
}

2. Povolte statické hostování webových stránek pro bucket S3

  1. Vraťte se do svého bucketu a přejděte na Vlastnosti.
  2. V Hosting statických webových stránek, vyberte Úprava.
  3. Povolit Hosting statických webových stránek.
  4. Zadejte dokumenty Index a Error pro bucket S3.
  5. Vyberte Uložit změny.

Endpoint webu bucketu bude dostupný na adrese http://<your-S3-bucket02>.s3-website.<aws-region>.amazonaws.com. Vzhledem k zásadě bucketu bude webový endpoint přístupný pouze pro provoz pocházející ze zadané vyhrazené výstupní IP adresy.

3. Nastavte zásadu vyhrazené výstupní IP adresy

  1. V Cloudflare dashboard, přejděte na Zero Trust > Zásady provozu > Zásady egress. Vyberte Přidat zásadu.
  2. Vytvořte zásadu, která určuje, kterému proxy provozu má Gateway přiřadit vyhrazená odchozí IP adresa kam odkazuje. Další informace najdete v Zásady egress.
  3. V Vyberte odchozí IP adresu, vyberte Použít vyhrazené výstupní IP adresy Cloudflare. Vyberte vyhrazenou výstupní IP adresu definovanou v zásadě bucketu.
  4. Vyberte Vytvořit zásadu.

Provoz proxovaný přes Gateway a přiřazený k vaší zadané odchozí IP adrese může přistupovat k vašemu S3 bucketu na http://<your-S3-bucket02>.s3-website.<aws-region>.amazonaws.com.