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:
-
Erstellen Sie eine Liste der Ressourcen, mit denen Sie die Bereitstellung planen. CloudFormation
-
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.
-
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
ResourceElement listet zwei verschiedene Ressourcentypen auf, die die folgenden Amazon Resource Name (ARN) -Formate verwenden:-
Das ARN-Format eines S3-Objekts ist
arn:$.<Partition>:s3:::$<BucketName>/$<ObjectName> -
Das ARN-Format eines S3-Buckets ist
arn:$.<Partition>:s3:::$<BucketName>
s3:GetObjects3:GetObjectVersion, unds3:PutObjecterfordern einen S3-Objektressourcentyp unds3:GetBucketVersioningerfordert 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
PrincipalElement 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
ConditionElement schränkt den Zugriff auf den S3-Bucket weiter ein, sodass nur dasDeployfiles_buildCodeBuild Projekt, dieDeployment-PipelineCodePipeline 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}/*'