Verwenden von Bedingungsschlüssel - Amazon ElastiCache (RedisOSS)

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.

Verwenden von Bedingungsschlüssel

Sie können Bedingungen angeben, die bestimmen, wie eine IAM-Richtlinie wirksam wird. In können Sie das Condition Element einer JSON-Richtlinie verwenden ElastiCache, um Schlüssel im Anforderungskontext mit Schlüsselwerten zu vergleichen, die Sie in Ihrer Richtlinie angeben. Weitere Informationen finden Sie unter IAM-JSON-Richtlinienelemente: Bedingung.

Eine Liste der ElastiCache Bedingungsschlüssel finden Sie unter Bedingungsschlüssel für Amazon ElastiCache in der Service Authorization Reference.

Eine Liste der globalen Bedingungsschlüssel finden Sie unter AWS Globale Bedingungskontextschlüssel.

Festlegung von Bedingungen: Verwenden von Bedingungsschlüsseln

Um eine differenzierte Steuerung zu implementieren, schreiben Sie eine IAM-Berechtigungs-Richtlinie, die Bedingungen zum Steuern eines Satzes einzelner Parameter für bestimmte Anforderungen festlegt. Anschließend wenden Sie die Richtlinie für die IAM-Benutzer, -Gruppen oder -Rollen an, die Sie mithilfe der IAM-Konsole erstellen.

Um eine Bedingung anzuwenden, fügen Sie die Bedingungsinformationen der IAM-Richtlinienanweisung hinzu. Im folgenden Beispiel geben Sie die Bedingung an, dass jeder erstellte selbst entworfene Cache-Cluster vom Knotentyp cache.r5.large ist.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:CacheNodeType": [ "cache.r5.large" ] } } } ] }

Weitere Informationen finden Sie unter Beispiele für Tag-basierte Zugriffssteuerungsrichtlinien.

Weitere Informationen zur Verwendung von Richtlinienbedingungsoperatoren finden Sie unter ElastiCache API-Berechtigungen: Referenz zu Aktionen, Ressourcen und Bedingungen.

Beispielrichtlinien: Verwenden von Bedingungen für die differenzierte Parameterkontrolle

Dieser Abschnitt enthält Beispielrichtlinien für die Implementierung einer detaillierten Zugriffskontrolle für die zuvor aufgeführten Parameter. ElastiCache

  1. elasticache:MaximumDataStorage: Geben Sie den maximalen Datenspeicher eines serverlosen Caches an. Unter den angegebenen Bedingungen kann der Kunde keine Caches erstellen, die mehr als eine bestimmte Datenmenge speichern können.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDependentResources", "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscachesnapshot:*", "arn:aws:elasticache:*:*:snapshot:*", "arn:aws:elasticache:*:*:usergroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscache:*" ], "Condition": { "NumericLessThanEquals": { "elasticache:MaximumDataStorage": "30" }, "StringEquals": { "elasticache:DataStorageUnit": "GB" } } } ] }
  2. elasticache:MaximumeCPUPerSecond: Geben Sie den maximalen Wert für ECPU pro Sekunde eines serverlosen Caches an. Unter den angegebenen Bedingungen kann der Kunde keine Caches erstellen, die mehr als eine bestimmte Anzahl ECPUs pro Sekunde ausführen können.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDependentResources", "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscachesnapshot:*", "arn:aws:elasticache:*:*:snapshot:*", "arn:aws:elasticache:*:*:usergroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscache:*" ], "Condition": { "NumericLessThanEquals": { "elasticache:MaximumECPUPerSecond": "100000" } } } ] }
  3. elasticache:CacheNodeType: Geben Sie an, welche (s) ein Benutzer erstellen kann. NodeType Unter Verwendung der bereitgestellten Bedingungen kann der Kunde einen einzelnen Wert oder einen Bereichswert für einen Knotentyp angeben.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:CacheNodeType": [ "cache.t2.micro", "cache.t2.medium" ] } } } ] }
  4. elasticache:NumNodeGroups: Erstellt eine Replikationsgruppe mit weniger als 20 Knotengruppen.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "NumericLessThanEquals": { "elasticache:NumNodeGroups": "20" } } } ] }
  5. elasticache:ReplicasPerNodeGroup: Geben Sie die Replikate pro Knoten zwischen 5 und 10 an.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "NumericGreaterThanEquals": { "elasticache:ReplicasPerNodeGroup": "5" }, "NumericLessThanEquals": { "elasticache:ReplicasPerNodeGroup": "10" } } } ] }
  6. elasticache:EngineVersion: Geben Sie die Verwendung der Engine-Version 5.0.6 an.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:EngineVersion": "5.0.6" } } } ] }
  7. elasticache:EngineType: Geben Sie an, dass nur die Redis OSS-Engine verwendet wird.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:EngineType": "redis" } } } ] }
  8. elasticache:AtRestEncryptionEnabled: Geben Sie an, dass Replikationsgruppen nur bei aktivierter Verschlüsselung erstellt werden.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:AtRestEncryptionEnabled": "true" } } } ] }
  9. Elasticache: TransitEncryptionEnabled

    1. Setzen Sie den elasticache:TransitEncryptionEnabled Bedingungsschlüssel false für die CreateReplicationGroupAktion auf, um anzugeben, dass Replikationsgruppen nur erstellt werden können, wenn TLS nicht verwendet wird:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:TransitEncryptionEnabled": "false" } } } ] }

      Wenn der elasticache:TransitEncryptionEnabled Bedingungsschlüssel false in einer Richtlinie für die CreateReplicationGroupAktion auf gesetzt ist, ist eine CreateReplicationGroup Anfrage nur zulässig, wenn TLS nicht verwendet wird (d. h. wenn die Anfrage keinen TransitEncryptionEnabled Parameter enthält, der auf gesetzt ist true oder auf gesetzt ist)required. TransitEncryptionMode

    2. Setzen Sie den elasticache:TransitEncryptionEnabled Bedingungsschlüssel auf true für die CreateReplicationGroupAktion, um anzugeben, dass Replikationsgruppen nur erstellt werden können, wenn TLS verwendet wird:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:TransitEncryptionEnabled": "true" } } } ] }

      Wenn der elasticache:TransitEncryptionEnabled Bedingungsschlüssel true in einer Richtlinie für die CreateReplicationGroupAktion auf gesetzt ist, ist eine CreateReplicationGroup Anfrage nur zulässig, wenn die Anforderung einen Parameter enthält, der auf gesetzt ist, true und einen TransitEncryptionEnabled TransitEncryptionMode Parameter, der auf gesetzt ist. required

    3. Legen Sie elasticache:TransitEncryptionEnabled für die ModifyReplicationGroup-Aktion auf true fest, um anzugeben, dass Replikationsgruppen nur geändert werden können, wenn TLS verwendet wird:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:ModifyReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "BoolIfExists": { "elasticache:TransitEncryptionEnabled": "true" } } } ] }

      Wenn der elasticache:TransitEncryptionEnabled Bedingungsschlüssel true in einer Richtlinie für die ModifyReplicationGroupAktion auf gesetzt ist, ist eine ModifyReplicationGroup Anfrage nur zulässig, wenn die Anforderung einen TransitEncryptionMode Parameter enthält, der auf gesetzt istrequired. DerTransitEncryptionEnabled-Parameter, der auf true festgelegt ist, kann optional ebenfalls enthalten sein, ist in diesem Fall jedoch nicht erforderlich, um TLS zu aktivieren.

  10. elasticache:AutomaticFailoverEnabled: Geben Sie an, dass Replikationsgruppen nur bei aktiviertem automatischem Failover erstellt werden.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:AutomaticFailoverEnabled": "true" } } } ] }
  11. elasticache:MultiAZEnabled:   Geben Sie an, dass Replikationsgruppen nicht mit deaktiviertem Multi-AZ erstellt werden können.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Deny", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:MultiAZEnabled": "false" } } } ] }
  12. elasticache:ClusterModeEnabled: Geben Sie an, dass Replikationsgruppen nur bei aktiviertem Clustermodus erstellt werden können.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:ClusterModeEnabled": "true" } } } ] }
  13. elasticache:AuthTokenEnabled: Geben Sie an, dass Replikationsgruppen nur mit aktiviertem AUTH-Token erstellt werden können.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "Bool": { "elasticache:AuthTokenEnabled": "true" } } } ] }
  14. elasticache:SnapshotRetentionLimit: Geben Sie die Anzahl der Tage (oder min/max.) an, für die der Snapshot aufbewahrt werden soll. Die folgende Richtlinie erzwingt die Speicherung von Backups für mindestens 30 Tage.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup", "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*", "arn:aws:elasticache:*:*:serverlesscache:*" ], "Condition": { "NumericGreaterThanEquals": { "elasticache:SnapshotRetentionLimit": "30" } } } ] }
  15. elasticache:KmsKeyId: Geben Sie die Verwendung von vom Kunden verwalteten KMS-Schlüsseln an. AWS

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDependentResources", "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscachesnapshot:*", "arn:aws:elasticache:*:*:snapshot:*", "arn:aws:elasticache:*:*:usergroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateServerlessCache" ], "Resource": [ "arn:aws:elasticache:*:*:serverlesscache:*" ], "Condition": { "StringEquals": { "elasticache:KmsKeyId": "my-key" } } } ] }
  16. elasticache:CacheParameterGroupName: Geben Sie eine nicht standardmäßige Parametergruppe mit spezifischen Parametern von einer Organisation in Ihren Clustern an. Sie können auch ein Benennungsmuster für Ihre Parametergruppen angeben oder das Löschen eines bestimmten Parametergruppennamens blockieren. Im Folgenden finden Sie ein Beispiel, das die Verwendung von nur "“ my-org-param-group einschränkt.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*", "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:CacheParameterGroupName": "my-org-param-group" } } } ] }
  17. elasticacheCreateCacheCluster: CreateCacheCluster Aktion wird verweigert, wenn das Anforderungs-Tag Project fehlt oder nicht gleich oder ist. Dev QA Prod

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*", "arn:aws:elasticache:*:*:securitygroup:*", "arn:aws:elasticache:*:*:replicationgroup:*" ] }, { "Effect": "Deny", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:AddTagsToResource" ], "Resource": "arn:aws:elasticache:*:*:cluster:*", "Condition": { "StringEquals": { "aws:RequestTag/Project": [ "Dev", "Prod", "QA" ] } } } ] }
  18. elasticache:CacheNodeType: Zulassen CreateCacheCluster mit cacheNodeType cache.r5.large oder cache.r6g.4xlarge und Tag. Project=XYZ

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEqualsIfExists": { "elasticache:CacheNodeType": [ "cache.r5.large", "cache.r6g.4xlarge" ] }, "StringEquals": { "aws:RequestTag/Project": "XYZ" } } } ] }
Anmerkung

Beim Erstellen von Richtlinien zum gemeinsamen Erzwingen von Tags und anderen Bedingungsschlüsseln kann die Bedingung IfExists aufgrund der zusätzlichen elasticache:AddTagsToResource-Richtlinienanforderungen für Erstellungsanforderungen mit dem --tags-Parameter für Bedingungsschlüsselelemente erforderlich sein.