Repository navigation
feat: add MacOS support to confcom - #10380
Adam Short (ashort96) wants to merge 2 commits into
Conversation
|
Hi Adam Short (@ashort96), |
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
|
Thank you for your contribution Adam Short (@ashort96)! We will review the pull request and get back to you soon. |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The extension version and image-layer binary selection need fixes, along with documented requirements and Darwin architecture coverage.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (4)
What changed in this PR
Adds macOS support for confcom Linux-container policy generation using native Intel and Apple Silicon binaries.
Changes:
- Packages and selects Darwin
dmverity-vhdandsign1utilbinaries. - Updates documentation and CLI help.
- Records the macOS support history entry.
| File | Summary |
|---|---|
src/confcom/setup.py |
Packages Darwin binaries; version bump and host-specific image-layer selection remain needed. |
src/confcom/README.md |
Documents macOS support; Docker requirements should distinguish image and --tar workflows. |
src/confcom/HISTORY.rst |
Records the feature under the current version; a new version section is needed. |
src/confcom/azext_confcom/rootfs_proxy.py |
Selects Darwin hashing binaries; architecture coverage is needed. |
src/confcom/azext_confcom/cose_proxy.py |
Selects Darwin signing binaries; architecture coverage is needed. |
src/confcom/azext_confcom/_params.py |
Updates CLI parameter help; Docker and Linux-container requirements need clarification. |
src/confcom/azext_confcom/_help.py |
Updates command help; Docker and Linux-container requirements need clarification. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| "bin/dmverity-vhd-darwin-arm64", # Apple Silicon for ACI | ||
| "bin/dmverity-vhd-darwin-amd64", # Intel Mac for ACI |
| if machine == "arm64": | ||
| DEFAULT_LIB += "-darwin-arm64" | ||
| elif machine in ("x86_64", "amd64"): | ||
| DEFAULT_LIB += "-darwin-amd64" | ||
| else: | ||
| eprint(f"Unsupported MacOS architecture: {machine}.") |
| if machine == "arm64": | ||
| DEFAULT_LIB += "-darwin-arm64" | ||
| elif machine in ("x86_64", "amd64"): | ||
| DEFAULT_LIB += "-darwin-amd64" | ||
| else: | ||
| eprint(f"Unsupported MacOS architecture: {machine}.") |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved moderate issues remain in executable permissions, platform propagation, and Darwin/Windows validation.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (5)
Use host-specific dmverity binaries in image layer resolution Reject Windows policy targets on macOS · New Qualify Docker requirement for Windows image workflows · New Add Darwin architecture selection and unsupported-architecture tests Add Darwin architecture selection and unsupported-architecture tests
Resolved since last review (1)
| elif host_os == "Darwin": | ||
| if machine == "arm64": | ||
| binary_name += "-darwin-arm64" | ||
| elif machine in ("x86_64", "amd64"): | ||
| binary_name += "-darwin-amd64" |
| Docker must be running when generating Linux policies from container images. It is not required when all image layers are supplied with `--tar`. | ||
|
|
||
| **Docker Desktop must be running in the matching container mode** to produce correct layer hashes: | ||
| Windows policies require Docker in Windows-container mode: |
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
Add MacOS support for both Intel and Apple Silicon Macs. By updating integrity-vhd to v2.3 and pulling this microsoft/integrity-vhd#21, we now have the ability to run confcom generation on MacOS. This only adds support for `confcom`, it does not touch `katapolicygen`.
- Centralize host-specific `dmverity-vhd resolution` in `rootfs_proxy.py` - Updated `get_image_layers()` to use the resolver - Added Darwin `arm64`, `x86_64`/`amd64`, and unsupported arch coverage - Bumped extension version to 2.2.0 - Clarified Docker requirements for image workflows
4c62f9e to
316acb6
Compare
|
Ethan Yang (@necusjz) what is the best path forward for getting this merged? I'd love to have native MacOS support for this since the upstream dependencies are now published for MacOS. |
|
Adam Short (@ashort96) are you from |
I am not from the Tingmao Wang (@micromaomao) has helped us in this effort by merging the following PRs: |
|
Hi, this looks good to me but to merge it we will want to do some confcom end-to-end testing beforehand, which our team has no space to do this week. |
|
We can't support a MacOS version of this tool, certainly not a PR from someone we do not know. If you have a proper use case please email me and explain. |
|
We are customers of Azure, and are users of confidential containers with ACI. Some of our fleet is macOS, hence the desire to expand the multi-OS support of this confcom extension from Windows and Linux to include macOS. We are trying to be good customers by contributing back into the product ecosystem.
But most of these have now been accepted; the upstream changes relevant to this PR are Thanks you Tingmao Wang (@micromaomao) for engaging with us on these. In our honest estimation, we didn’t think the maintenance burden for the support of a third OS on this confcom extension would be blocking issue.
We’d happily take feedback on minimizing these changes, if the maintenance burden is the primary objection. Another approach we could take here is a code change that would allow environment variables to override the binary dependencies. We took this initial approach, because I hope you’ll consider this; we are customers, and we’re trying to remain as customers. |
|
Can you email me directly and tell me who you are please?
Ken
…________________________________
From: Daniel James ***@***.***>
Sent: Tuesday, October 06, 2026 18:24
To: Azure/azure-cli-extensions ***@***.***>
Cc: Ken Gordon ***@***.***>; Mention ***@***.***>
Subject: Re: [Azure/azure-cli-extensions] feat: add MacOS support to confcom (PR #10380)
[https://avatars.githubusercontent.com/u/470008?s=20&v=4]dwhjames left a comment (Azure/azure-cli-extensions#10380)<#10380 (comment)>
KenGordon<https://github.com/KenGordon>
We are customers of Azure, and are users of confidential containers with ACI. Some of our fleet is macOS, hence the desire to expand the multi-OS support of this confcom extension from Windows and Linux to include macOS.
We are trying to be good customers by contributing back into the product ecosystem.
And some customer feedback: it’s been surprisingly difficult to contribute. We’ve submitted minor fixes in the past year and had quite the challenge to get these accepted.
* #9068<#9068>
* microsoft/confidential-sidecar-containers#237<microsoft/confidential-sidecar-containers#237>
* microsoft/integrity-vhd#21<microsoft/integrity-vhd#21>
* microsoft/cosesign1go#33<microsoft/cosesign1go#33>
* microsoft/cosesign1go#34<microsoft/cosesign1go#34>
But most of these have now been accepted; the upstream changes relevant to this PR are
* microsoft/integrity-vhd#21<microsoft/integrity-vhd#21>
* microsoft/cosesign1go#34<microsoft/cosesign1go#34>
Thanks you Tingmao Wang ***@***.***)<https://github.com/micromaomao> for engaging with us on these.
In our honest estimation, we didn’t think the maintenance burden for the support of a third OS on this confcom extension would be blocking issue.
1. The changes here are primarily about extending the lookup tables for which binaries to download and use for integrity-vhd and cosesign1go.
2. The upstream projects integrity-vhd and cosesign1go built and functioned correctly for macOS without any code changes. And ORAS, the other third-party binary dependency in this project, already has macOS support.
3. We’ve used the development tooling for azure cli to confirm that we can get matching hashes across operating systems for the confidential computing enforcement policy.
We’d happily take feedback on minimizing these changes, if the maintenance burden is the primary objection.
Another approach we could take here is a code change that would allow environment variables to override the binary dependencies. We took this initial approach, because integrity-vhd and cosesign1go now have official binary releases; however, we would happily fall back to managing the binaries outside of the extension, as long as there was a mechanism to override.
I hope you’ll consider this; we are customers, and we’re trying to remain as customers.
—
Reply to this email directly, view it on GitHub<#10380?email_source=notifications&email_token=ABI7RIDKN562DRJDT7ZPMVL5SUTENA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTMMBSGE3DQMRVGU4KM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-6021682558>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABI7RIBHIM2I2Z72FEZOQXT5SUTENAVCNFSNUABFKJSXA33TNF2G64TZHMYTANRVHAYDAMRUHNEXG43VMU5TKNJUGEYDGNBUGQZKC5QC>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|



🤖 PR Validation — ️✔️ All clear
Add MacOS support for both Intel and Apple Silicon Macs. By updating integrity-vhd to v2.3 and pulling this
microsoft/integrity-vhd#21, we now have the ability to run confcom generation on MacOS. This only adds support for
confcom, it does not touchkatapolicygen.This checklist is used to make sure that common guidelines for a pull request are followed.
Related command
General Guidelines
azdev style <YOUR_EXT>locally? (pip install azdevrequired)python scripts/ci/test_index.py -qlocally? (pip install azdevrequired)For new extensions:
About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update
src/index.jsonautomatically.You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify
src/index.json.