Konfiguration von Berechtigungen mit den geringsten Rechten für Ressourcen, die bereitgestellt werden über CloudFormation - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfiguration von Berechtigungen mit den geringsten Rechten für Ressourcen, die bereitgestellt werden über CloudFormation

AWS CloudFormation ermöglicht es Ihnen, viele verschiedene Arten von AWS Ressourcen bereitzustellen. Bereitgestellte Ressourcen benötigen eigene Berechtigungen, um wie vorgesehen zu funktionieren und um zu konfigurieren, wer Zugriff auf diese Ressourcen hat. Im vorherigen Kapitel wurden Optionen für die Konfiguration von Zugriffs- und Nutzungsberechtigungen für den CloudFormation Dienst beschrieben. In diesem Kapitel wird beschrieben, wie Sie das Prinzip der geringsten Rechte auf Ressourcen anwenden können, die über CloudFormation bereitgestellt werden.

In diesem Leitfaden wäre es praktisch unmöglich, die Sicherheitsempfehlungen und bewährten Methoden für jeden AWS Ressourcentyp zu überprüfen, über den bereitgestellt werden kann. CloudFormation Wenn Sie Fragen zu einem bestimmten Dienst haben, empfehlen wir Ihnen, die Dokumentation für diesen Dienst zu lesen. Die meisten AWS-Service Dokumente enthalten einen Sicherheitsabschnitt und Informationen zu den Berechtigungen, die für die Nutzung dieses Dienstes erforderlich sind. Eine vollständige Liste der AWS-Service Dokumentation finden Sie unter AWS Dokumentation.

Im Folgenden finden Sie allgemeine, dienstunabhängige Schritte, die Sie ergreifen können, um CloudFormation Vorlagen zu erstellen, die dem Prinzip der geringsten Rechte entsprechen:

  1. Erstellen Sie eine Liste der Ressourcen, mit denen Sie die Bereitstellung planen. CloudFormation

  2. In der AWS Dokumentation finden Sie die entsprechenden Dienste und lesen Sie sich die Abschnitte zu Sicherheit und Zugriffsverwaltung durch. Dies hilft Ihnen, die dienstspezifischen Anforderungen und Empfehlungen zu verstehen.

  3. Verwenden Sie die Informationen, die Sie in den vorherigen Schritten gesammelt haben, um CloudFormation Vorlagen und zugehörige Richtlinien zu entwerfen, die nur die erforderlichen Berechtigungen zulassen und alle anderen verweigern.

Als Nächstes gibt dieser Leitfaden anhand eines realen Anwendungsfalls ein Beispiel dafür, wie Sie das Prinzip der geringsten Rechte in CloudFormation Vorlagen anwenden können.

Beispiel: Amazon S3 S3-Bucket zum Speichern von Pipeline-Artefakten

In diesem Beispiel wird ein Amazon Simple Storage Service (Amazon S3) -Bucket erstellt, der zum Speichern von AWS CodeBuildProjektartefakten verwendet wird. AWS CodePipelineverwendet diese gespeicherten Artefakte. Sie können diesen S3-Bucket über Servicerollen zulassen CodeBuild und CodePipeline darauf zugreifen, und Sie kontrollieren diesen Zugriff mithilfe einer Amazon S3 S3-Bucket-Richtlinie. Im Folgenden sind die in diesem Beispiel verwendeten Ressourcennamen aufgeführt:

  • Deployfiles_buildist der Name des CodeBuild Projekts.

  • Deployment-Pipelineist der Name der Pipeline in CodePipeline.

Definieren Sie den Amazon S3 S3-Bucket

Zunächst definieren Sie den S3-Bucket in der CloudFormation Vorlage, bei der es sich um eine YAML-formatierte Textdatei handelt.

amzn-s3-demo-bucket: Type: AWS::S3::Bucket Properties: PublicAccessBlockConfiguration: BlockPublicAcls: true BlockPublicPolicy: true IgnorePublicAcls: true RestrictPublicBuckets: true

Definieren Sie die Amazon S3 S3-Bucket-Richtlinie

Als Nächstes erstellen Sie in der CloudFormation Vorlage eine Bucket-Richtlinie, die nur dem Deployfiles_build Projekt und der Deployment-Pipeline Pipeline den Zugriff auf den Bucket ermöglicht.

MyBucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: !Ref amzn-s3-demo-bucket PolicyDocument: Version: "2012-10-17" Statement: - Sid: "S3ArtifactRepoAccess" Effect: Allow Action: - ‘s3:GetObject' - ‘s3:GetObjectVersion' - ‘s3:PutObject' - ‘s3:GetBucketVersioning' Resource: - !Sub ‘arn:aws:s3:::${amzn-s3-demo-bucket}' - !Sub ‘arn:aws:s3:::${amzn-s3-demo-bucket}/*' Principal: Service: - codebuild.amazonaws.com - codepipeline.amazonaws.com Condition: StringLike: ‘aws:SourceArn': - !Sub ‘arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/Deployfiles_build' - !Sub ‘arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:Deployment-Pipeline' - !Sub ‘arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:Deployment-Pipeline/*'

Beachten Sie Folgendes zu dieser Bucket-Richtlinie:

  • Das Resource Element listet zwei verschiedene Ressourcentypen auf, die die folgenden Amazon Resource Name (ARN) -Formate verwenden:

    • Das ARN-Format eines S3-Objekts istarn:$<Partition>:s3:::$<BucketName>/$<ObjectName>.

    • Das ARN-Format eines S3-Buckets istarn:$<Partition>:s3:::$<BucketName>.

    s3:GetObjects3:GetObjectVersion, und s3:PutObject erfordern einen S3-Objektressourcentyp und s3:GetBucketVersioning erfordert einen S3-Bucket-Ressourcentyp. Weitere Informationen zu den erforderlichen Ressourcentypen für jede Aktion finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3.

  • Das Principal Element listet die Entitäten auf, die die in der Erklärung definierten Amazon S3 S3-Aktionen ausführen dürfen. In diesem Fall dürfen nur CodeBuild und CodePipeline dürfen diese Aktionen ausführen.

  • Das Condition Element schränkt den Zugriff auf den S3-Bucket weiter ein, sodass nur das Deployfiles_build CodeBuild Projekt, die Deployment-Pipeline CodePipeline Pipeline und die Pipeline-Aktionen auf den Bucket zugreifen können.

Erstellen Sie die Servicerollen

Die Bucket-Richtlinie steuert zwar den Zugriff auf den Bucket, gewährt aber keine Berechtigungen für den Bucket CodeBuild und den CodePipeline Zugriff darauf. Um Zugriff zu gewähren, müssen Sie für jeden Dienst eine Servicerolle erstellen und jedem Dienst die folgende Anweisung hinzufügen. Die Dienstrollen für CodeBuild und CodePipeline ermöglichen den Diensten den Zugriff auf den S3-Bucket und seine Objekte.

Sid: "ViewAccessToS3ArtifactRepo" Effect: Allow Action: - ‘s3:GetObject' - ‘s3:GetObjectVersion' - ‘s3:PutObject' - ‘s3:GetBucketVersioning' Resource: - !Sub ‘arn:aws:s3:::${BuildArtifactsBucket}' - !Sub ‘arn:aws:s3:::${BuildArtifactsBucket}/*'