/* * Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ using System; using System.Collections.Generic; using System.Text; namespace Amazon.Auth.AccessControlPolicy { /// /// AWS access control policy conditions are contained in /// objects, and affect when a statement is applied. For example, a statement /// that allows access to an Amazon SQS queue could use a condition to only apply /// the effect of that statement for requests that are made before a certain /// date, or that originate from a range of IP addresses. /// /// Multiple conditions can be included in a single statement, and all conditions /// must evaluate to true in order for the statement to take effect. /// /// /// The set of conditions is D in the statement /// "A has permission to do B to C where D applies." /// /// /// A condition is composed of three parts: /// /// /// Condition Key /// The condition key declares which value of a /// request to pull in and compare against when a policy is evaluated by AWS. For /// example, using will cause /// AWS to pull in the current request's source IP as the first value to compare /// against every time your policy is evaluated. /// /// /// /// Comparison Type /// This is a static value used as the second value /// in the comparison when your policy is evaluated. Depending on the comparison /// type, this value can optionally use wildcards. See the documentation for /// individual comparison types for more information. /// /// /// /// Comparison Value /// This is a static value used as the second value /// in the comparison when your policy is evaluated. Depending on the comparison /// type, this value can optionally use wildcards. See the documentation for /// individual comparison types for more information. /// /// /// /// /// public class Condition { private string type; private string conditionKey; private string[] values; public Condition() { } public Condition(string type, string conditionKey, params string[] values) { this.type = type; this.conditionKey = conditionKey; this.values = values; } /// /// Gets the type of this condition. /// public string Type { get { return type; } set { this.type = value; } } /// /// Gets and Sets the name of the condition key involved in this condition. /// Condition keys are predefined values supported by AWS that provide input /// to a condition's evaluation, such as the current time, or the IP address /// of the incoming request. /// /// Your policy is evaluated for each incoming request, and condition keys /// specify what information to pull out of those incoming requests and plug /// into the conditions in your policy. /// /// public string ConditionKey { get { return conditionKey; } set { this.conditionKey = value; } } /// /// Gets and Sets the values specified for this access control policy condition. /// For example, in a condition that compares the incoming IP address of a /// request to a specified range of IP addresses, the range of IP addresses /// is the single value in the condition. /// /// Most conditions accept only one value, but multiple values are possible. /// /// public string[] Values { get { return values; } set { this.values = value; } } } }