/*
* Copyright 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.Xml.Serialization;
using System.Text;
using System.IO;
namespace Amazon.S3.Model
{
///
/// The container element for all Public Access Block configuration options. You can enable
/// the configuration options in any combination.
///
///
///
/// Amazon S3 considers a bucket policy public unless at least one of the following conditions
/// is true:
///
/// -
///
/// The policy limits access to a set of CIDRs using
aws:SourceIp
. For more
/// information on CIDR, see http://www.rfc-editor.org/rfc/rfc4632.txt
///
///
/// -
///
/// The policy grants permissions, not including any "bad actions," to one of the following:
///
///
-
///
/// A fixed AWS principal, user, role, or service principal
///
///
-
///
/// A fixed
aws:SourceArn
///
/// -
///
/// A fixed
aws:SourceVpc
///
/// -
///
/// A fixed
aws:SourceVpce
///
/// -
///
/// A fixed
aws:SourceOwner
///
/// -
///
/// A fixed
aws:SourceAccount
///
/// -
///
/// A fixed value of
s3:x-amz-server-side-encryption-aws-kms-key-id
///
/// -
///
/// A fixed value of
aws:userid
outside the pattern "AROLEID:*
"
///
///
///
/// "Bad actions" are those that could expose the data inside a bucket to reads or writes
/// by the public. These actions are s3:Get*
, s3:List*
, s3:AbortMultipartUpload
,
/// s3:Delete*
, s3:Put*
, and s3:RestoreObject
.
///
///
///
/// The star notation for bad actions indicates that all matching operations are considered
/// bad actions. For example, because s3:Get*
is a bad action, s3:GetObject
,
/// s3:GetObjectVersion
, and s3:GetObjectAcl
are all bad actions.
///
///
public class PublicAccessBlockConfiguration
{
private bool? blockPublicAcls;
private bool? ignorePublicAcls;
private bool? blockPublicPolicy;
private bool? restrictPublicBuckets;
///
/// Gets and sets the property BlockPublicAcls.
///
/// Specifies whether Amazon S3 should block public ACLs for this bucket. Setting this
/// element to TRUE
causes the following behavior:
///
/// -
///
/// PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public
/// access.
///
///
-
///
/// PUT Object calls will fail if the request includes an object ACL.
///
///
///
/// Note that enabling this setting doesn't affect existing policies or ACLs.
///
///
public bool BlockPublicAcls
{
get { return this.blockPublicAcls ?? default(bool); }
set { this.blockPublicAcls = value; }
}
// Check to see if BlockPublicAcls property is set
internal bool IsSetBlockPublicAcls()
{
return this.blockPublicAcls.HasValue;
}
///
/// Gets and sets the property IgnorePublicAcls.
///
/// Specifies whether Amazon S3 should ignore public ACLs for this bucket. Setting this
/// element to TRUE
causes Amazon S3 to ignore all public ACLs on this bucket
/// and any objects that it contains.
///
///
///
/// Note that enabling this setting doesn't affect the persistence of any existing ACLs
/// and doesn't prevent new public ACLs from being set.
///
///
public bool IgnorePublicAcls
{
get { return this.ignorePublicAcls ?? default(bool); }
set { this.ignorePublicAcls = value; }
}
// Check to see if IgnorePublicAcls property is set
internal bool IsSetIgnorePublicAcls()
{
return this.ignorePublicAcls.HasValue;
}
///
/// Gets and sets the property BlockPublicPolicy.
///
/// Specifies whether Amazon S3 should block public bucket policies for this bucket. Setting
/// this element to TRUE
causes Amazon S3 to reject calls to PUT Bucket policy
/// if the specified bucket policy allows public access.
///
///
///
/// Note that enabling this setting doesn't affect existing bucket policies.
///
///
public bool BlockPublicPolicy
{
get { return this.blockPublicPolicy ?? default(bool); }
set { this.blockPublicPolicy = value; }
}
// Check to see if BlockPublicPolicy property is set
internal bool IsSetBlockPublicPolicy()
{
return this.blockPublicPolicy.HasValue;
}
///
/// Gets and sets the property RestrictPublicBuckets.
///
/// Specifies whether Amazon S3 should restrict public bucket policies for this bucket.
/// Setting this element to TRUE
restricts access to this bucket to only
/// Amazon Web Service principals and authorized users within this account if the bucket
/// has a public policy.
///
///
///
/// Enabling this setting doesn't affect previously stored bucket policies, except that
/// public and cross-account access within any public bucket policy, including non-public
/// delegation to specific accounts, is blocked.
///
///
public bool RestrictPublicBuckets
{
get { return this.restrictPublicBuckets ?? default(bool); }
set { this.restrictPublicBuckets = value; }
}
// Check to see if RestrictPublicBuckets property is set
internal bool IsSetRestrictPublicBuckets()
{
return this.restrictPublicBuckets.HasValue;
}
}
}