代码之家  ›  专栏  ›  技术社区  ›  Trond Kristiansen

以编程方式将默认加密KMS添加到Bucket

  •  0
  • Trond Kristiansen  · 技术社区  · 6 年前

    我正在使用AWS SDK iOS v2.6.21以编程方式向AWS S3存储桶添加KMS(SSE-KMS)加密。我用以下目标C代码进行此操作:

    awss3*awsclient=[awss3 s3forkey:bucketObject.regionshortname];
    awss3服务器加密规则*规则=[awss3服务器加密规则新建];
    awss3serversideencryptionbydefault*applyserversidencryptionbydefault=[awss3serversideencryptionbydefault new];applyserversidencryptionbydefault.ssealgorithm=awss3serversideencryptionwskms;
    
    applyserverSideEncryptionByDefault.kmsMasterKeyID=kmsAliasKeyID;
    AWSS3服务器加密配置*配置=
    [AWSS3服务器加密配置新];
    configuration.rules=@[规则];
    
    AWSS3PutbucketeEncryptionRequest*请求=
    [AWSS3Putbucketencryptionrequest new];
    request.bucket=bucketObject.name;
    request.serversideencryptionconfiguration=配置;
    
    [客户端PutbacketenCryption:请求];
    

    }

    这看起来是可行的,显示我的bucket有默认加密。但是,它并没有指定加密是KMS,它只是显示了一个启用加密的复选标记(查看控制台时)。

    当我以编程方式检查加密的状态时,它没有为ssealgorithm指定任何内容:

    <awss3服务器加密配置:0x604000008790>。{
    规则=(
    “<awss3服务器加密规则:0x6040000087f0>\n”
    )(二)
    }
    

    我希望显示ssealgorithm的输出是2,基于awss3服务器加密在awsssdk中的定义:

    awss3服务器加密:
    AWSS3服务器加密未知,
    AWSS3服务器加密256,
    AWSS3服务器加密WSKMS,
    

    当我使用SSE-S3(awss3serversideencryptions256)执行相同代码时比较输出,输出为:

    <awss3服务器加密配置:0x6000000009c40>。{
    规则=(
    “<awss3服务器加密规则:0x6000000009c50>\n
    applyserverSideEncryptionByDefault=\“<awss3服务器端加密ByDefault:0x60000022B6A0>\n sseAlgorithm=1;\\n \”“;\n”
    )(二)
    }
    
    
    

    有人能看到我在正确使用KMS作为整个bucket的默认加密的请求中缺少的内容吗?

    谢谢。干杯,特隆德

    }

    这看起来是可行的,显示我的bucket有默认加密。但是,它并没有指定加密是KMS,它只是显示了一个启用加密的复选标记(查看控制台时)。AWS console after enabling encryption using KMS

    当我以编程方式检查加密的状态时,它没有为ssealgorithm指定任何内容:

    <AWSS3ServerSideEncryptionConfiguration: 0x604000008790> {
        rules =     (
            "<AWSS3ServerSideEncryptionRule: 0x6040000087f0> {\n}"
        );
    }
    

    我希望显示ssealgorithm的输出为2,基于awss3服务器加密在awsssdk中的定义:

    AWSS3ServerSideEncryption:
    AWSS3ServerSideEncryptionUnknown,
    AWSS3ServerSideEncryptionAES256,
    AWSS3ServerSideEncryptionAwsKms,
    

    当我使用SSE-S3(awss3serversideencryptions256)执行相同代码时,比较输出时,输出为:

    <AWSS3ServerSideEncryptionConfiguration: 0x600000009c40> {
        rules =     (
            "<AWSS3ServerSideEncryptionRule: 0x600000009c50> {\n    
    applyServerSideEncryptionByDefault = \"<AWSS3ServerSideEncryptionByDefault: 0x60000022b6a0> {\\n    SSEAlgorithm = 1;\\n}\";\n}"
        );
    }
    

    有人能看到我在正确使用KMS作为整个bucket的默认加密的请求中缺少的内容吗?

    谢谢。干杯,特隆德

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bommas    6 年前

    您已经正确地设置了所有对象,除了在规则中关联加密的步骤。请参阅下面的代码,了解正确设置所需的更改。

    ...
    ...
    ...
    
    AWSS3ServerSideEncryptionRule *rule= [AWSS3ServerSideEncryptionRule new];
    
    AWSS3ServerSideEncryptionByDefault *applyServerSideEncryptionByDefault =[AWSS3ServerSideEncryptionByDefault new];
    applyServerSideEncryptionByDefault.SSEAlgorithm=AWSS3ServerSideEncryptionAwsKms;
    applyServerSideEncryptionByDefault.KMSMasterKeyID=kmsAliasKeyId;
    
    //Add the encryption information to the rule
    rule.applyServerSideEncryptionByDefault = applyServerSideEncryptionByDefault;
    
    
    AWSS3ServerSideEncryptionConfiguration *configuration = 
    
    ...
    ...
    ...